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



我正在尝试为一个angular项目编写一些单元测试。我遵循了一些关于测试控制器的例子,但我总是以同样的问题结束:$rootScope似乎是未定义的。

. 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中包含了所有的angular文件。如果我通过sshfs将主应用程序从服务器挂载到本地Ubuntu 14.04,并且Karma安装在该本地机器上,它会导致问题吗?

你需要注入它。在beforeEach中使用inject,否则它只是在函数作用域中定义的一个变量,没有定义任何值。

: -

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

最新更新