Неизвестный провайдер в тестовом примере для angular с модулем es6

Мне нужно написать тестовый пример кармы-жасмина для контроллера

(->

class AddUserController
  @$inject = ['$scope', '$http', '$state', 'UserFactory']

  constructor: (@$scope, @$http, @$state, UserFactory) ->
    @user = new UserFactory()



angular
.module('app', [])
.controller('AddUserController', AddUserController)
)()

но когда я ввожу AddUserController в тестовый пример, он дает мне неизвестного провайдера:

describe('add_user_controller', function() {
  var addUserController, $httpBackend;

  beforeEach(module("app"));

  beforeEach(
    inject( function($injector, $rootScope) {
      addUserController = $injector.get('AddUserController')
    })
  );
  it('should have initialize values', function() {
    expect(addUserController.user).toBeDefined();
  })
});

Кто-нибудь может догадаться, что здесь происходит не так.

Вот код karma.conf.js

module.exports = function(config) {
  config.set({
    frameworks: ['jasmine'],
    files: [
      'node_modules/angular/angular.js',
      'node_modules/angular-mocks/angular-mocks.js',
      '*.coffee',
      'test/*.coffee'
    ],
    preprocessors: {
      '*.coffee': ['coffee']
    },
    plugin: [
      'karma-coffee-preprocessor',
      'karma-jasmine',
      'karma-chrome-launcher',
    ],
    autoWatch: true,
    browsers: ['Chrome']
  });
};

мой addUserController.coffee и karma.conf.js находятся в одном корне (уровень).


person M. Bhamre    schedule 06.08.2016    source источник


Ответы (1)


Вы должны получить экземпляр контроллера, передав имя контроллера службе $controller. Как ниже

scope = $rootScope.$new(true);
//inject `$controller` before use it.
addUserController = $controller('AddUserController', { $scope: scope });
person Pankaj Parkar    schedule 06.08.2016
comment
теперь выдает ошибку Невозможно прочитать свойство $scope неопределенного :( - person M. Bhamre; 06.08.2016
comment
Также я попытался написать addUserController = $controller('AddUserController', {$scope: scope, $http: $http, $state: $state, UserFactory: userFactory}) безуспешно. - person M. Bhamre; 06.08.2016
comment
Аргумент «AddUserController» не является функцией, стал неопределенным - person M. Bhamre; 06.08.2016
comment
Попросите ypu ссылаться на скрипт контроллера на странице. Также обратитесь ко всем зависимым угловым файлам. - person Pankaj Parkar; 06.08.2016
comment
Вы должны сослаться на AddUserController.js + другие файлы угловых компонентов, которые вы собираетесь тестировать, и файл, в котором определено приложение. - person Pankaj Parkar; 06.08.2016
comment
Я получил свое решение. Я по ошибке создал два модуля с одинаковым именем «приложение», поэтому возникла проблема. - person M. Bhamre; 06.08.2016