angularjs - Karma + Jasmine 下 angular.mock.inject 的 TypeScript AngularJS Controller 测试问题

标签 angularjs typescript jasmine karma-runner

我正在尝试使用 Jasmine + Karma 测试用 TypeScript 编写的 AngularJS 1 Controller 。但是我一直遇到一个我不知道如何修复的错误。该错误非常难以描述:

PhantomJS 2.1.1 (Windows 8 0.0.0) Login Controller should have text" FAILED 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): Executed 1 of 1 (1 FAILED) ERROR (0.019 secs / 0.015 secs)

这是我的代码,请注意它实际上并没有做任何事情。它似乎在 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 文件。

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

关于angularjs - Karma + Jasmine 下 angular.mock.inject 的 TypeScript AngularJS Controller 测试问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37277806/

相关文章:

javascript - 如何使用 Jest toHaveBeenCalled 与不同的实例一起工作

javascript - angular2中多步表单每一步的唯一url

javascript - 根据 json 响应显示表格

angularjs - 您似乎没有安装名为 Angular 的生成器。?

javascript - 如何创建具有可变属性的 Angular 模块?

typescript :从类型中排除所有必需的属性

javascript - JasmineJS 需要测试的应用程序的特定区域

node.js - 在 Karma 的运行器中包含 Jasmine Node 文件

javascript - 什么是真正的单元测试?

javascript - Spring Maven Angjular JS 问题