首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >错误:注入器已创建,无法注册模块

错误:注入器已创建,无法注册模块
EN

Stack Overflow用户
提问于 2017-12-21 15:44:05
回答 1查看 258关注 0票数 0

我试图测试window.location是否在方法结束时被设置为特定的URL,但我得到了这个错误:

代码语言:javascript
复制
Error: Injector already created, can not register a module!

代码:

代码语言:javascript
复制
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时也会出现错误?

EN

回答 1

Stack Overflow用户

发布于 2017-12-21 17:45:48

您可以尝试使用单次注入方法:

代码语言:javascript
复制
var ctrlInstance;
beforeEach(module('app');
beforeEach(module(function($provide) {...})

像这样的东西

代码语言:javascript
复制
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');

}));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47920185

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档