AngularJS和Jasmine,inject()会导致错误

时间:2016-07-26 12:21:03

标签: angularjs jasmine karma-jasmine

我用karma + jasmine写测试。看看这个:

describe("users module", function(){

    var scope, controller;

    beforeEach(function () {
        module('users');
    });

    it("should work", function(){

    });

});

上面的代码正常工作,我得到了这个输出

PhantomJS 2.1.1 (Linux 0.0.0): Executed 1 of 1 SUCCESS (0.038 secs / 0.001 secs)

我真正需要做的是测试模块控制器。所以我补充说:

describe("users module", function(){

    var scope, controller;

    beforeEach(function () {
        module('users');
    });

    describe("Users list", function(){
        beforeEach(inject(function ($rootScope, $controller) {
            scope = $rootScope.$new();
            controller = $controller('ctrl', {
                '$scope': scope
            });
        }));

        it("should work", function(){

        });
    });
});

当我添加第二个beforeEach块时,我得到注入错误。错误转储是巨大,它是这样开始的:

Error: [$injector:modulerr] http://errors.angularjs.org/1.5.7/$injector/modulerr?p0=users

我试图尽可能地干掉代码,但即使是以下内容也会导致相同的错误:

describe("users module", function(){

    var scope, controller;

    beforeEach(function () {
        module('users');
    });

    describe("Users list", function(){
        beforeEach(inject(function () {

        }));

        it("should work", function(){

        });
    });
});

我的代码出了什么问题?

== EDIT ==

如果我切换到非缩小角度版本,我会得到一个可读的错误转储,如下所示:

public/src/bower_components/angular/angular.js:4632:53
        forEach@public/src/bower_components/angular/angular.js:321:24
        loadModules@public/src/bower_components/angular/angular.js:4592:12
        createInjector@public/src/bower_components/angular/angular.js:4514:30
        workFn@public/src/bower_components/angular-mocks/angular-mocks.js:3067:60
        loaded@http://localhost:9876/context.js:151:17

1 个答案:

答案 0 :(得分:1)

原来我拼错了模块依赖。

课程:如果有角色说创建模块users时遇到了麻烦,那么这很可能是真的,而你必须先调查该错误。