簡體   English   中英

Karma測試中的未知提供商

[英]Unknown provider in Karma test

我有以下提供者:

(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在運行時正確注入。

您可能不會在karma.conf.js依賴項列表中包含定義提供程序的文件。 看到這個問題:

在Angular應用程序的Karma測試文件中包含依賴項?

我會將$ _Config重命名為其他內容,'$'通常保留用於特定於角度的組件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM