2014-01-22 64 views
1

如果在index.html中包含angular-mocks.js,ngMock會自動包含自身。如何在AngularJS中自動加載模塊而不指定它作爲依賴

什麼是最簡單的方法來強制角度加載模塊在測試模式,只需包括一個文件,而不必編輯任何模塊的依賴關係。

+0

你不能這樣做。沒有辦法自動化模塊加載,因爲您必須指定依賴關係樹。 Angular-mocks只依賴於'ng'模塊。 –

+0

恐怕不是這樣,angular-mocks.js通過將ngMock和ng模塊移入模塊數組來實現ngMock。雖然他們的實現對我來說看起來不是很乾淨(這個過程有很多支持代碼),但我想知道是否有更好的方法。 – eddiec

+0

「自動包含自身」是什麼意思? ** [ngMocks](http://code.angularjs.org/1.2.9/angular-mocks.js)**使用'angular.module('ngMock',['ng'])...'加載本身。 – gkalpak

回答

2

加載模塊的唯一方法是調用angular.module(...)ngMocks負荷「本身」致電:

angular.module('ngMock', ['ng']).provider(...).config(...); 

你並不需要聲明一個模塊作爲一個依賴加載它。你可以在其腳本中包含angular.module('<moduleName>', [<moduleDependencies>...]);


如果你的意思是「如何ngMock自動的加入到加載使用window.moduleangular.mock.module任何模塊的依賴關係列表,這是因爲ngMocks創建一個自定義的注入,這樣,它需要依賴的名單,並預置'ngMock'

window.inject = angular.mock.inject = function() { 
    ... 
    return isSpecRunning() ? workFn() : workFn; 
    ... 
    function workFn() { 
    var modules = currentSpec.$modules || []; 

    modules.unshift('ngMock'); // <-- this line does the trick 
    modules.unshift('ng'); 
    ... 

你可以創建自己的函數,預先考慮您的模塊中實例化之前依賴的名單,但我很難相信THI s將有助於測試。相反,它將是錯誤的另一個來源(並且將導致可能「隱藏」依賴性錯誤)。

+0

這是我感興趣的第二部分 - 我想知道是否有一種優雅的方式來做到這一點? – eddiec

+0

你究竟想達到什麼目的?爲什麼你想讓你的測試易於理解並容易出錯?只需保存一些按鍵就可以了? – gkalpak