【问题标题】:Unknown provider in Karma testKarma 测试中的未知提供商
【发布时间】:2023-03-03 10:12:01
【问题描述】:

我有以下提供者:

(function (angular) {
  angular.module('app')
        .provider('$_Config', ConfigProvider);

  function ConfigProvider() {
      .... //routes definition 
  }
  ConfigProvider.prototype.$get = function () {
    return this;
  };

  ConfigProvider.prototype.getRoutes = function() {...}

  //other prototype functions 

})(angular);

在 app.js 中我是这样使用它的:

app.config(function ($routeProvider, $_ConfigProvider) {
    var routes = $_ConfigProvider.getRoutes();
    routes.forEach(function(route) {
        $routeProvider
          .when(route.route, {
           .....
          })

}

在进行测试之前,一切正常。这是我的测试:

describe('Provider: $_ConfigProvider', function () {

  // load the providers module
  beforeEach(module('app'));

  // instantiate provider
  var $_ConfigProvider;
  beforeEach(inject(function (_$_Config_) {
    $_ConfigProvider = _$_Config_;
  }));


  it('Should verify getRoutes function', function () {
    var routes = $_ConfigProvider.getRoutes();
    expect(Object.prototype.toString.call(routes) === '[object Array]').toBe(true);
  });
});

运行测试时出现以下错误:

  Error: [$injector:modulerr] Failed to instantiate module app due to:
  Error: [$injector:unpr] Unknown provider: $_ConfigProvider

注意:$_ConfigProvider 在运行时被正确注入。

【问题讨论】:

    标签: javascript angularjs unit-testing testing karma-jasmine


    【解决方案1】:

    您可能没有在 karma.conf.js 依赖项列表中包含定义提供程序的文件。看到这个问题:

    Include dependencies in Karma test file for Angular app?

    我会将 $_Config 重命名为其他名称,“$”通常是为特定角度的组件保留的。

    【讨论】:

    • @vlio20 究竟订购了什么?
    • 静态资源,你的第三方库。
    猜你喜欢
    • 1970-01-01
    • 2017-06-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多