我正在尝试为角项目编写一些单元测试。我已经关注了一些关于测试控制器的例子,但我总是遇到同样的问题:$ 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的问题?
答案 0 :(得分:2)
你需要注射它。在inject
中使用beforeEach
,否则它只是在函数范围中定义的变量,没有任何值定义。
实施例: -
beforeEach(inject(function($rootScope, $controller) {
scope = $rootScope.$new();
ctrl = $controller('yourcontroller', {
$scope: $rootScope.$new()
});
}));