2016-05-17 131 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文件没有被导入。

(是该错误信息是没有帮助解决这一时。)