Karma+Jasmine下angular.mock.inject的TypeScript AngularJS控制器测试问



我正在尝试用Jasmine+Karma测试用TypeScript编写的AngularJS 1控制器。但我一直碰到一个错误,我不知道该怎么解决。这个错误很普通:

PhantomJS 2.1.1(Windows 8 0.0.0)登录控制器应该有文本"失败对于每个@/bower_components/angular/angular.js:341:24loadModules@/bower_components/angular/angular.js:4456:12createInjector@/bower_components/angular/angular.js:4381:22workFn@/bower_components/angular mocks/angular mocks.js:2507:60/bower_components/angular/angular.js:4496:53对于每个@/bower_components/angular/angular.js:341:24loadModules@/bower_components/angular/angular.js:4456:12createInjector@/bower_components/angular/angular.js:4381:22workFn@/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失败)错误(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包含在我的文件列表中(在依赖项列表的末尾)。如果这有什么不同的话,我用wiredep来计算我的依赖关系。

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

(是的,当解决这个问题时,错误消息根本没有帮助。)

最新更新