![](/img/trans.png)
[英]How to mock angular.module('myModule', []).value() in Jasmine/Protractor
[英]How to mock a module in angular
因此,到目前为止,我已经阅读了许多帖子,但没有建议。
我想模拟一个模块-说出angular-foo。 原始文件将与其他所有文件一起加载。
angular.module('app', ['angular-foo'...
我想在我的业力/摩卡测试中模拟这个模块。 我已经尝试过像这样称呼它的建议,但这是不行的。
beforeEach(module('app'));
beforeEach(module('angular-foo'))
如何完全阻止原始的angular-foo运行(但必须将其作为其余代码的一部分加载)?
要模拟factory
, service
和value
服务,可以使用angular.mock.module
对象参数
beforeEach(module('app', 'angular-foo', {
fooFactoryService: ...,
fooValueService: ...
}));
为了模拟可在配置阶段注入的服务( constant
和provider
),应使用配置功能
beforeEach(module('app', 'angular-foo', ($provide) => {
$provide.constant('fooConstantService', ...),
$provide.provider('fooProviderService', ...),
}));
该行中的最后一个模块将覆盖其他模块的服务。 可以部分模拟服务(使用$provide.decorator
)或完全$provide.decorator
。
如果没有加载angular-foo
模块,但其他模块使用了它,则可以在规范中使用其模拟版本完全重新定义它
angular.module('angular-foo', [])...
beforeEach(module('app', 'angular-foo'));
对我来说,窍门是将提供程序放在模块声明之前:
beforeEach(module(function($provide) {
$provide.provider('myProvider', function() {
return {
myProviderFunction: function() {},
$get: function () {
return {
myProviderFunction: function() {}
};
}
};
});
}));
beforeEach(module('myApp'));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.