我正在尝试为一个 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/