我正在尝试为现有的Angular JS项目设置单元测试,但我一直在标题中收到错误:
Unknown provider: $$qProvider <- $$q <- $interval
这是我的单元测试:
描述(&#34;屏幕控制器&#34;,功能(){
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) {
我猜测我注射的依赖性有问题。提前谢谢。
答案 0 :(得分:3)
$$qProvider
。它没有记录并在内部使用。
在此版本$IntervalProvider
使用$q
之前,在测试版14及更高版本中,它同时使用$q
和$$q
。
某处你有AngularJS模块的冲突版本。
检查所有文件或例如Bower组件。
确保您的核心AngularJS版本足够高,可用于您可能正在使用的其他模块。例如,Angular Material需要Angular 1.3.x。