我得到了this error。这是我注射器无法解决所需依赖关系的问题,但即使我对角度的了解有限,我也很确定这段代码不应该依赖于任何模块。
此代码在浏览器中运行良好,但它似乎并不想在我的测试中工作。我一直在关注文档中的examples
我的角度版本为1.2.13
(编辑:现在使用1.12.15
)。
这是我的代码:
var app = angular.module('app', [])
.controller('GreetingCtrl', function ($scope) {
$scope.title = "Hello World!";
$scope.message = "Test, test. One? Two?";
});
这里的茉莉花测试失败了。
describe('app controllers', function () {
beforeEach(module('app'));
describe('GreetingCtrl', function () {
it('should says hello world', inject(function ($controller) {
var $scope = {};
$controller('GreetingCtrl', $scope);
expect($scope.title).toBe("Hello World!");
}));
});
});
我不相信它甚至已经达到了运行测试的程度,因为它在运行之前就已经失败了。我相信我也正确地连接了文件。这是我从茉莉花测试运动员那里得到的错误。
Error: [$injector:unpr] http://errors.angularjs.org/1.2.13/$injector/unpr?p0=%24scopeProvider%20%3C-%20%24scope (line 4569) (1)
修改尝试升级到1.12.15
,没有任何变化。
答案 0 :(得分:8)
显然,在IRC上进行了一些聊天后,文档可能已经过时了。这是一个有效的解决方案。我与solution,&相应地纠正了我的测试。
describe('app controllers', function () {
var ctrl, scope;
beforeEach(module('app'));
describe('GreetingCtrl', function () {
beforeEach(inject(function ($rootScope, $controller) {
scope = $rootScope.$new();
ctrl = $controller('GreetingCtrl', {$scope: scope});
}));
it('should says hello world', function () {
expect(scope.title).toBe("Hello World!");
});
});
});
修改:
我不小心误读了原来的文件。这是一个更接近文档的更清洁的解决方案。
describe('app controllers', function () {
beforeEach(module('app'));
describe('GreetingCtrl', function () {
it('should says hello world', inject(function ($controller) {
var $scope = {};
// this is the line that caused me pain
$controller('GreetingCtrl', { $scope: $scope });
expect($scope.title).toBe("Hello World!");
}));
});
});