2014-10-16 201 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的任一選項。