我正在尝试为一个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()
});
}));