2014-10-16 158 views
0

如果我有这个模块:角模块加载

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' 
]) 

回答

2

双方将工作,但两者是不正确的。

MyServicemyMod取决于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(); 
    }) 
}); 

如果你选了你的建议,测试用例会失败,因为它MyServicecommon.module取决于Common的任一选项。