2015-01-26 4 views
3

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

В C# существует способ перенастроить контейнер DI, чтобы автоматически издеваться над всеми зависимостями, когда вызывается Resolve(). Я хочу что-то подобное в Угловом.

Я хочу от этого:

beforeEach(inject(function ($controller, $rootScope, agsRest) { 
     scope = $rootScope.$new();  

     sut = $controller('SearchController', { 
      $scope: scope 
      , map: {} 
      , agsRest: agsRest 
      , config: {} 
      , core: {} 
      , myPopup: {} 
      , popupFormatter: {} 
     }); 
    })); 

Чтобы что-то вроде этого:

beforeEach(inject(function ($controller, $rootScope, agsRest) { 
     scope = $rootScope.$new();  

     sut = autoMock("SearchController"); // instance of SearchController is returned, which has all dependencies mocked with sinon/jasmine/whatever 
    })); 

Есть ли какая-то библиотека/код, чтобы сделать это?

+0

Нет, но вам не нужно издеваться * все *, только то, что вы собираетесь использовать в тесте, не так ли? –

+1

Иногда. Но мне все равно нужно создавать и передавать все зависимости при использовании $ controller ('SearchController', {...}); И это требует много ручного письма. – andree

ответ

1

Мне нужно что-то подобное и придумал эту небольшую библиотеку: tentacle.js. Я подхожу к предложениям и выдвигаю запросы на улучшение API.

0

Вы должны искать ng-улучшенное тестирование. Это создает автоматическую фальсификацию для всех инъецируемых сервисов (вам нужно добавить только «Mock» к имени службы, когда вы их вводите).

Ссылка на GitHub: https://github.com/evangalen/ng-improved-testing

Смежные вопросы