2015-08-26 5 views
1

Я начал тестировать свое угловое приложение и задал вопрос, который меня очень беспокоил. Например, у меня есть контроллер (mainController), который вводит 2 службы: authService, configService.Испытательный угловой контроллер со многими зависимостями

Перед тестированием я должен подготовить что-то вроде этого:

describe('controller: testController with testService mock', function() {  
    var controller, authService, configService; 

    beforeEach(module('app')); 

    beforeEach(inject(function($controller, _authService_, _configService_) {   
     authService = _authService_; 
     configService = _configService_; 

     controller = $controller('mainController'); 
    }));  

    it('should be registered with all dependencies', function() { 
     expect(controller).to.be.defined; 

     expect(authService).to.be.defined; 
     expect(configService).to.be.defined; 
    }); 

} 

И это совершенно ясно для меня. Что делать, если одна из служб или обоих имеет свои собственные зависимости (услуги)? Конечно, я собираюсь добавить его, пройдя через функцию инъекции. В небольших приложениях это не проблема. Я добавляю столько услуг, сколько мне нужно. Но вопрос в том, что, если эти службы вводят другие услуги, а другие вводят других, и существует огромная иерархия? Что делать, если мы должны добавить 30 сервисов, и мы не можем ошибаться, потому что иначе это не сработает?

Честно говоря, я много искал, но есть много примеров и руководств по тестированию, но каждый из них основан на базовых приложениях с несколькими контроллерами и службами.

Есть ли безболезненный способ справиться с этим? Может быть, есть способ пропустить некоторые зависимости или заставить автоматически вводить службы с его зависимостями?

ответ

0

Что делать, если одна из служб или обоих имеет свои собственные зависимости (услуги)? Конечно, я собираюсь добавить его, пропуская функцию впрыска

Нет, не получится. Угловые будут создавать эти службы и внедрять их там, где их нужно вводить, если они находятся в модуле «приложение» или в одной из его зависимостей.

Нет причин вводить какие-либо услуги в ваш тест, если вам не нужно что-то делать с ними, например, вызвать один из своих методов или шпионить за ними.

+0

Хорошо, но если я этого не делаю, у меня есть ошибка «перед каждым крюком НЕИСПРАВНО». Что не так ? – Donut

+0

Когда вы спросите об ошибке, напишите код, вызывающий ошибку в вопросе, а также полное сообщение об ошибке и трассировку стека. –

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