使用Karma进行测试时,$ rootScope未定义

时间:2014-08-14 15:29:05

标签: angularjs unit-testing karma-runner

我正在尝试为角项目编写一些单元测试。我已经关注了一些关于测试控制器的例子,但我总是遇到同样的问题:$ rootScope似乎未定义。

我的test.js:

describe("Unit: BodyCtrl", function() {

    var scope;

    beforeEach(function($rootScope, $controller) {
        scope = $rootScope.$new();
    });

    it('foo should be foo', function() {
        expect("foo").toBe("foo");
    });
})

和错误:

TypeError: Cannot read property '$new' of undefined'

我已将所有角度文件包含在karma.conf.js中。它是否会导致我通过sshfs从服务器到我的本地Ubuntu 14.04挂载主应用程序并且在所述本地机器上安装了Karma的问题?

1 个答案:

答案 0 :(得分:2)

你需要注射它。在inject中使用beforeEach,否则它只是在函数范围中定义的变量,没有任何值定义。

实施例: -

beforeEach(inject(function($rootScope, $controller) {
    scope = $rootScope.$new();
    ctrl = $controller('yourcontroller', {
        $scope: $rootScope.$new()
    });
}));