![](/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.