如果我有这个模块:
angular.module('myMod', [])
.factory('MyService', ['$http', 'Common', function ($http, Common) {
var neededUrl = Common.myUrl;
}]);
我以这种方式加载了我的应用模块:
angular.module('myApp', [
'myMod'
])
.factory('Common', function () {
return {
myUrl: "/Some/Url"
}
});
myMod
能否接受Common
依赖关系并将其加载?
或者这样做更好:
angular.module('common.module', [])
.factory('Common', function () {
return {
myUrl: "/Some/Url"
}
});
angular.module('myApp', [
'common.module',
'myMod'
])
答案 0 :(得分:2)
两者都有效,但两者都不正确。
来自MyService
的 myMod
取决于Common
,而不是相反。假设您确实选择将Common
添加到模块common.module
。然后myMod
应取决于common.module
angular.module('common.module', [])
.factory('Common', function () {
return {
myUrl: "/Some/Url"
}
});
angular.module('myMod', [
'common.module'
])
.factory('MyService', ['$http', 'Common', function ($http, Common) {
var neededUrl = Common.myUrl;
}]);
angular.module('myApp', [
'myMod'
]);
使用正确的依赖关系管理可以运行独立的测试。以下是应该有效的茉莉花示例:
describe('Test myMod', function() {
beforeEach(module('myMod')); // from angular-mocks
it('should work', function() {
expect(true).toBeTruthy();
})
});
如果您选择了其中一个选项,那么测试用例就会失败,因为MyService
确实依赖Common
的{{1}}。