我有个问题。我有多个具有相同依赖需求的角度模块。目前,下面的代码可以很好地运行应用程序,但不能测试...请参见下文 angular.module('app',['d1','d2']) angular.module('app.home', []); angular.module('app.about',[]);
我也在进行业力测试,因此当我通过'app.about'模块并且业力要求'd1'依赖性时。然后,我添加了“ app”模块,它可以工作,但是即使“ d2”与“ app.about”无关,我也必须在“ app.about”规范中添加“ d2”。
然后,我继续进行以下修复: angular.module('app',['d1','d2']) angular.module('app.home', ['d1']); angular.module('app.about',['d1']);
感觉是重复的。所以我的问题是...这是角模块如何工作的吗?如果以后我在所有模块中都使用“ d1”和“ d2”怎么办?这不会使我的模块重复吗?同样,由于业障测试,我需要以下代码。 angular.module('app',['d1','d2']) angular.module('app.home', ['d1','d2']); angular.module('app.about',['d1','d2']);
谢谢你的帮助。附言我看了约翰·帕帕(Johnpapa)的指南,但对此我似乎并不清楚。
最佳答案
仅当模拟依赖项会影响测试结果时,才需要提供它们。通常他们不会。但是,您可以通过在实际实现的顶部简单地注册模拟程序来“重新映射”任何依赖项。
例如:
(function(){
“使用严格”;
var serviceId ='apiService';
angular.module('app')。factory(serviceId,
['$ q',apiService]);
函数apiService($ q){
var service = {
sendData:模拟功能,
saveUserState:mockFunction
}
退货服务;
函数mockFunction(){返回$ q.when({})}
}
})();
不利的一面是,该模拟版本将在所有地方使用,但这通常是您想要的。
请注意,如果app.home和app.about不包含对d2中内容的隐式依赖关系,您应该能够通过仅初始化被测模块来避免引导d2:beforeEach(module('app.home'));