【问题标题】:Angular Unit Test: Unknown provider: $$qProvider <- $$q <- $intervalAngular 单元测试:未知提供者:$$qProvider <- $$q <- $interval
【发布时间】:2015-04-03 02:28:18
【问题描述】:

我正在尝试为现有的 Angular JS 项目设置单元测试,但标题中不断出现错误:

Unknown provider: $$qProvider <- $$q <- $interval

这是我的单元测试:

describe("屏幕控制器", function(){

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) {

我猜我注入的依赖项有问题。提前致谢。

【问题讨论】:

  • 我认为我的问题来自于我不明白$controller()函数的第二个参数在做什么。

标签: javascript angularjs unit-testing dependency-injection jasmine


【解决方案1】:

$$qProvider 是在 AngularJS 1.3.0-beta.14 中引入的。它未记录在案并在内部使用。

在此版本之前$IntervalProvider 使用$q,而在 beta.14 及更高版本中它同时使用$q$$q

您的 AngularJS 模块版本存在冲突。

检查您的所有文件,例如您的 Bower 组件。

确保您的核心 AngularJS 版本对于您可能正在使用的其他模块来说足够高。例如,Angular Material 需要 Angular 1.3.x。

【讨论】:

  • 谢谢!!我有一种预感,这是我最近下载的 angular-mocks.js 版本。是否有与 angular 1.2.x 兼容的版本?还是我需要更新我的角度?
  • 进入你的版本对应的文件夹,得到angular-mocks.js:code.angularjs.org
  • 啊!我不知道这是可能的!出于好奇?我应该考虑升级 Angular 吗?它们是 1.2 和 1.3 之间的重大变化吗?
  • 是的,有明显的变化。你可以在这里阅读它们:docs.angularjs.org/guide/migration
  • 就是这样!谢谢你的帮助。顺便说一句,我目前在这里遇到一个不同的问题:stackoverflow.com/questions/28319879/… 我怀疑这对你来说可能是一个简单的答案。
猜你喜欢
  • 2015-03-04
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 2014-12-06
  • 1970-01-01
  • 2017-12-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多