Угловое определение фабрики с требованием - PullRequest
0 голосов
/ 11 января 2019

У меня есть фабрика Angularjs, определенная как:

angular.module('myapp').factory('myService', myService);
function myService($http) {

Однако это не было обнаружено в моих тестах на жасмин. Однако, если я добавляю пустой массив require, он работает в тестах, но само приложение ломается.

angular.module('myapp', []).factory('myService', myService);
function myService($http) {

Глядя на https://code.angularjs.org/1.5.8/docs/api/ng/function/angular.module для атрибута require, он говорит

Если указано, то создается новый модуль. Если не указано иное, модуль извлекается для дальнейшей настройки.

Но я не понимаю, как это могло бы сломать вещи, и как я могу заставить работать и тесты, и приложения.

Сервис включен в тестовый файл с:

describe('myService', function() {
  var myService;
  beforeEach(module('myapp'));
  beforeEach(inject(function($injector) {
    myService = $injector.get('myService');
  }));
  ...

1 Ответ

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

Проблема заключалась в том, что там, где были определены зависимости модуля, оно имеет

angular.module('tcom.search', ['ngSanitize', 'ui.bootstrap'])

Поэтому мне пришлось обновить конфигурацию grunt, чтобы включить компоненты bower

    karma: {
      unit: {
        options: {
          frameworks: ['jasmine'],
          singleRun: true,
          browsers: ['PhantomJS'],
          files: [
            'bower_components/angular/angular.js',
            'bower_components/angular-mocks/angular-mocks.js',
            'bower_components/angular-sanitize/angular-sanitize.js',
            'bower_components/angular-bootstrap/ui-bootstrap.js',
...