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.