Nano Hash - криптовалюты, майнинг, программирование

Ошибка: Инжектор уже создан, не удается зарегистрировать модуль

Я пытаюсь проверить, установлен ли window.location для определенного URL-адреса в конце метода, но я получаю эту ошибку:

Error: Injector already created, can not register a module!

Код:

describe('Home controller', function() {

  var $controller, $location, $window, $http, $timeout, $filter, $scope, $resource;

  beforeEach(module('app', function($provide) {
    $provide.value('$window', {
      location: {
        href: ''
      }
    });
  }));

  beforeEach(inject(function(_$controller_, _$location_, _$window_, _$rootScope_, _$http_,
    _$resource_, _$timeout_, _$filter_) {

    $controller = _$controller_;
    $location = _$location_;
    $window = _$window_;
    $http = _$http_;
    $timeout = _$timeout_;
    $filter = _$filter_;
    $scope = _$rootScope_.$new();

  }));

  it('check Home Ctrl', inject(function($rootScope, $httpBackend, API_URL) {

    var ctrlInstance = $controller('HomeCtrl', {
      $scope: $scope,
      $rootScope: $rootScope,
      $http: $http,
      $resource: $resource,
      $location: $location,
      $window: $window,
      $timeout: $timeout,
      API_URL: API_URL
    });

    $scope.goEditUser({
      userId: 2
    });
    expect($window.location.href).toContain('/switch-user/2');


  }));
});

Почему я получаю сообщение об ошибке, даже когда inject вызывается после модуля?

21.12.2017

Ответы:


1

Вы можете попробовать использовать метод одиночной инъекции:

var ctrlInstance;
beforeEach(module('app');
beforeEach(module(function($provide) {...})

и что-то вроде этого

it('check Home Ctrl', inject(function($controller, _$location_, _$window_, _$rootScope_, _$http_, _$resource_, _$timeout_, _$filter_) {

  var ctrlInstance = $controller('HomeCtrl', {
    $location : _$location_,
    $window : _$window_,
    $http : _$http_,
    $timeout : _$timeout_,
    $filter : _$filter_,
    $scope : _$rootScope_.$new(),
    $rootScope: _$rootScope_,
    $resource: _$resource_,
    API_URL: API_URL
  });

  $scope.goEditUser({
    userId: 2
  });

  expect($window.location.href).toContain('/switch-user/2');

}));
21.12.2017
Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..