在Karma + Jasmine

时间:2016-05-17 13:38:16

标签: angularjs typescript jasmine karma-runner

我正在尝试使用Jasmine + Karma测试用TypeScript编写的AngularJS 1控制器。但我一直在犯一个我不知道如何解决的错误。错误是非常不明白的:

  

PhantomJS 2.1.1(Windows 8 0.0.0)登录控制器应该有文字“   失败           forEach@/bower_components/angular/angular.js:341:24           loadModules@/bower_components/angular/angular.js:4456:12           createInjector@/bower_components/angular/angular.js:4381:22           workFn@/bower_components/angular-mocks/angular-mocks.js:2507:60           /bower_components/angular/angular.js:4496:53           forEach@/bower_components/angular/angular.js:341:24           loadModules@/bower_components/angular/angular.js:4456:12           createInjector@/bower_components/angular/angular.js:4381:22           workFn@/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 of 1(1 FAILED)ERROR(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来计算我的依赖关系会产生任何影响。

1 个答案:

答案 0 :(得分:0)

我只是遇到了同样的错误,最后我设法通过导入.ts文件来修复它,该文件在我的test.ts文件的顶部创建模块。您收到此错误,因为未导入定义“app.pages.auth.login”模块的.ts文件。

(是的,在解决此问题时,错误信息根本没有帮助。)