2016-05-17 130 views
1

我想測試一個AngularJS 1控制器寫在TypeScript與茉莉花+噶瑪。但我不斷遇到一個錯誤,我不知道如何解決。該錯誤是相當不倫不類:TypeScript AngularJS控制器測試問題與angular.mock.inject Karma +茉莉花

PhantomJS 2.1.1(Windows 8的0.0.0)登錄控制器應該有文字」 失敗 [email protected]/bower_components/angular/angular.js:341:24個 loadModules @/bower_components/angular/angular.js:4456:12 [email protected]/bower_components/angular/angular.js:4381:22 [email protected]/bower_components/angular-mocks/angular-mocks.js:2507:60 /bower_components/angular /angular.js:4496:53 [email protected]_components/angular/angular.js:341:24 [email protected]/bower_components/angular/angular.js:4456:12 createInjector @/bower_ components/angular/angular.js:4381:22 [email protected]/bower_components/angular-mocks/angular-mocks.js:2507:60 /bower_components/angular/angular.js:4496:53 PhantomJS 2.1.1(Windows 8 0.0.0):執行的1 1(1失敗)錯誤(0.019秒/ 0.015秒)

這裏是我的代碼,發現它並沒有真正做任何事情。它似乎在angular.mocks.inject方法上失敗了,因爲當我對此進行評論並添加一些非常基本的測試時,它就會起作用。

describe("Login Controller",() => { 
    var controller: App.Login.LoginController; 

    beforeEach(angular.mock.module("app.pages.auth.login")); 

    beforeEach(angular.mock.module($provide => { 
     $provide.value("$window", {}); 
    })); 

    // I can get to here ok but this line below fails with the error above 
    // Note I have also tried putting $rootScope back in but to no avail 
    beforeEach(angular.mock.inject((/*$rootScope, $state, $http, $mdToast, $window, $log*/) => { 
     console.log("test"); 
    })); 

我已經檢查過我肯定包括angular-mocks.js我在文件列表中(靠近我的依賴列表的末尾albet)。如果它使用wiredep來計算我的依賴關係,即使有任何差異。

+0

也許沒有用,但儘量只'注入(()=> {})''沒有angular.mock'。這就是我所做的 - 使用打字稿和所有。 –

回答

0

我只是有同樣的錯誤,最後我設法通過導入在我的test.ts文件的頂部創建模塊的.ts文件來解決它。你得到這個錯誤是因爲定義「app.pages.auth.login」模塊的.ts文件沒有被導入。

(是該錯誤信息是沒有幫助解決這一時。)