Службы выдают ошибку неизвестного поставщика - Angularjs Unit Testing - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь исправить некоторые неработающие юнит-тесты, которые были установлены давно.По какой-то причине, когда мы запускаем тесты, все они терпят неудачу, ссылаясь на «ошибку неизвестного провайдера», которую мы получаем для каждого внедрения сервиса.Я много искал и не вижу каких-либо явных проблем с тестом.Если с тестом все в порядке, может ли это быть проблемой конфигурации?Я поиграл с порядком загрузки файлов, и это не имеет значения.

"use strict";

describe("Catalogs controller", function() {

  beforeEach(angular.mock.module("photonControllersPreSession"));



  var $rootScope;

  var $scope;
  var createController;
  var $window;
  var $location;
  var loggerService;
  var catalogService;
  var feedbackService;


  beforeEach(
    inject( function(
      $controller,
      _$rootScope_,
      _$window_,
      _$location_,
      _loggerService_,
      _catalogService_,
      _feedbackService_
    ) {
      $rootScope = _$rootScope_;
      $window = _$window_;
      $location = _$location_;
      loggerService = _loggerService_;
      catalogService = _catalogService_;
      feedbackService = _feedbackService_;
      $scope = $rootScope.$new();

      spyOn(loggerService, "info");

      createController = function() {
        return $controller("CatalogController", {
          $scope: $scope,
          $location: $location,
          $window: $window,
          loggerService: _loggerService_,
          catalogService: _catalogService_,
          feedbackService: _feedbackService_
        });
      };
    })
  );


  it("Should init", function() {
    var catalogController = null;
    catalogController = createController();
    console.log("test: " + createController);


    // Just want to see if the controller is created.
    expect(catalogController).not.toBe(null);
  });
});

1 Ответ

0 голосов
/ 24 января 2019

AngularJS требует загрузки всех модулей перед началом испытаний. В данный набор тестов включен только один модуль photonControllersPreSession.

Убедитесь, что CatalogController, loggerService, catalogService, feedbackService принадлежат модулю photonControllersPreSession, или их модули также включены в photonControllersPreSession.

Например, если loggerService является частью какого-либо другого модуля, скажем, mySuperModule, убедитесь, что mySuperModule был включен, как и

angular.module('photonControllersPreSession', [
  'mySuperModule'  
]);

в противном случае вы должны включать все модули вручную перед каждым тестом

beforeEach(() => {
  module('mySuperModule');
  module('photonControllersPreSession');
});
...