Angular 单元测试:未知提供者:$$qProvider <- $$q <- $interval
Angular Unit Test: Unknown provider: $$qProvider <- $$q <- $interval
我正在尝试为现有 Angular JS 项目设置单元测试,但我一直在标题中收到错误消息:
Unknown provider: $$qProvider <- $$q <- $interval
这是我的单元测试:
描述("screen controller",函数(){
beforeEach(module('tsApp'));
var scope, createController, $interval, $timeout, $translate, $sce, $controller;
beforeEach(inject(function(_$controller_, $rootScope, _$interval_, _$timeout_, _$translate_, _$sce_ ){
// The injector unwraps the underscores (_) from around the parameter names when matching
$interval = _$interval_;
$timeout = _$timeout_;
$translate = _$translate_;
$sce = _$sce_;
$controller = _$controller_;
scope = $rootScope.$new();
createController = function() {
return $controller('screenCtrl', {
'$scope' : scope,
'$interval' : $interval,
'$timeout' : $timeout,
'$translate' : $translate,
'$sce' : $sce
});
};
}));
describe('first test', function() {
it('it runs without error!', function() {
var controller = createController();
expect(true).toEqual(true);
});
});
});
我要测试的控制器是这样启动的:
var screenCtrl = tsApp.controller('screenCtrl', function($scope, updateService, $translate, $sce, $interval, $timeout) {
我猜我注入的依赖项有问题。提前致谢。
$$qProvider
是在 AngularJS 1.3.0-beta.14 中引入的。它没有记录并在内部使用。
在此版本之前 $IntervalProvider
使用 $q
,在 beta.14 和更高版本中它同时使用 $q
和 $$q
。
在某个地方你有 AngularJS 模块的版本冲突。
检查您的所有文件或例如您的 Bower 组件。
确保您的核心 AngularJS 版本对于您可能使用的其他模块来说足够高。 Angular Material 例如需要 Angular 1.3.x.
我正在尝试为现有 Angular JS 项目设置单元测试,但我一直在标题中收到错误消息:
Unknown provider: $$qProvider <- $$q <- $interval
这是我的单元测试:
描述("screen controller",函数(){
beforeEach(module('tsApp'));
var scope, createController, $interval, $timeout, $translate, $sce, $controller;
beforeEach(inject(function(_$controller_, $rootScope, _$interval_, _$timeout_, _$translate_, _$sce_ ){
// The injector unwraps the underscores (_) from around the parameter names when matching
$interval = _$interval_;
$timeout = _$timeout_;
$translate = _$translate_;
$sce = _$sce_;
$controller = _$controller_;
scope = $rootScope.$new();
createController = function() {
return $controller('screenCtrl', {
'$scope' : scope,
'$interval' : $interval,
'$timeout' : $timeout,
'$translate' : $translate,
'$sce' : $sce
});
};
}));
describe('first test', function() {
it('it runs without error!', function() {
var controller = createController();
expect(true).toEqual(true);
});
});
});
我要测试的控制器是这样启动的:
var screenCtrl = tsApp.controller('screenCtrl', function($scope, updateService, $translate, $sce, $interval, $timeout) {
我猜我注入的依赖项有问题。提前致谢。
$$qProvider
是在 AngularJS 1.3.0-beta.14 中引入的。它没有记录并在内部使用。
在此版本之前 $IntervalProvider
使用 $q
,在 beta.14 和更高版本中它同时使用 $q
和 $$q
。
在某个地方你有 AngularJS 模块的版本冲突。
检查您的所有文件或例如您的 Bower 组件。
确保您的核心 AngularJS 版本对于您可能使用的其他模块来说足够高。 Angular Material 例如需要 Angular 1.3.x.