Injetar Serviço Mock em cada teste Ember.

Em outros protocolos, expliquei duas maneiras diferentes de injetar um serviço em um teste. Este último explicará como injetar um serviço mock como um serviço real em cada teste executado, seja de aceitação, integração ou unitário.

Digamos que temos este serviço simulado simples:

mockService = Ember.Service.extend
mockFunction
: ->
'I mocked some stuff'

Para um teste de aceitação:

module 'module-name', TestName', { 
beforeEach: ->

application = startApp()

application.register('
service:mockservice', mockService);
application.register('
component', 'realService', 'service:mockservice')
}


afterEach: ->

Ember.run application, '
destroy'

E para um teste de integração / unidade:

moduleForComponent 'component-name', 'ComponentTestName', {
unit
: true
beforeEach
: ->
@container.register('service:mockservice', mockService)
@container.injection('component', 'realService', 'service:mockservice')
}




test
'it mocks the service', ->
expect
3
component
= @subject()

component
.set 'parentView',

equal component
._state, 'preRender'

@append()
equal component
._state, 'inDOM'

equal component
.get('realService').mockFunction(), 'I mocked some stuff'