angularjs - 使用 Karma 测试时 $rootScope 未定义

标签 angularjs unit-testing karma-runner

我正在尝试为一个 Angular 项目编写一些单元测试。我遵循了一些关于测试 Controller 的示例,但我总是遇到同样的问题:$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'

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

最佳答案

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

示例:-

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

关于angularjs - 使用 Karma 测试时 $rootScope 未定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311911/

相关文章:

javascript - AngularJS : watch array property

angularjs - 如何将默认时间设置为 ionic 时间类型的html输入字段

javascript - 如何解决 Protractor 的 'this fails on your system' 错误?

javascript - 在 karma 预处理器中将文件添加到监视列表

java - 在 Spring-Rest 中编写行为 JUnit 测试有什么意义?

phantomjs - Angular 2、Karma 和 PhantomJS

javascript - AngularJS 单选按钮 ng-repeat 值

javascript - 具有包含 ng-model 的隔离范围的模拟和测试指令

Python:对类使用文档测试

c# - 在单元测试中获取命令行参数