我正在与 AngularJS 一起构建一个 cordova / phonegap 应用程序。在我的应用程序中,我使用了一些来自 cordova 的本地插件,例如地理定位插件。
在我的测试期间,这个插件不可用(因为 phonegap 不存在),在我的测试中$window.plugins
返回。undefined
当然,$window.plugins.anotherPlugin
也失败了。
因此,我必须为我的测试模拟这些部分。目前,我正在这样做
beforeEach(function() {
$window.plugins = {
anotherPlugin: {
foo: function() {}
}
};
});
但是,如果将来另一个库使用$window.plugins
命名空间,而我在我的测试中覆盖它呢?这会破坏其他测试。使用上述方法,我必须在测试后进行一些清理,以确保$window.plugins
设置旧值。我认为,这种方式不是很干净,我想知道是否有更好的方式来处理茉莉花。
所以我的问题是:我怎样才能$window.plugins.anotherPlugin
通过用茉莉花创建虚拟函数来监视,而不影响其他测试,什么时候$window.plugins
不存在?