mock $ httpBackend em testes angulares e2e
Alguém tem uma idéia de como simular $ httpBackend em testes angulares e2e? A ideia é solicitar solicitações XHR durante a execução de testes no travis-ci. Estou usando karma para fazer proxy de ativos e parciais do meu aplicativo de trilhos executado no travis. Eu quero fazer testes de aceitação sem consultas DB reais.
Aqui faz parte do meu arquivo de configuração karma:
...
files = [
MOCHA,
MOCHA_ADAPTER,
'spec/javascripts/support/angular-scenario.js',
ANGULAR_SCENARIO_ADAPTER,
'spec/javascripts/support/angular-mocks.js',
'spec/javascripts/e2e/**/*_spec.*'
];
...
proxies = {
'/app': 'http://localhost:3000/',
'/assets': 'http://localhost:3000/assets/'
};
...
Aqui faz parte do meu arquivo de especificações:
beforeEach(inject(function($injector){
browser().navigateTo('/app');
}));
it('should do smth', inject(function($rootScope, $injector){
input('<model name>').enter('smth');
//this is the point where I want to stub real http query
pause();
}));
Eu tentei receber o serviço $ httpBackend através de $ injector:
$injector.get('$httpBackend')
Mas este não é o que é usado dentro do iframe onde meus testes são executados.
A próxima tentativa que fiz foi usando angular.scenario.dsl, aqui está o código samle:
angular.scenario.dsl('mockHttpGet', function(){
return function(path, fakeResponse){
return this.addFutureAction("Mocking response", function($window, $document, done) {
// I have access to window and document instances
// from iframe where my tests run here
var $httpBackend = $document.injector().get(['$httpBackend']);
$httpBackend.expectGET(path).respond(fakeResponse)
done(null);
});
};
});
Exemplo de uso:
it('should do smth', inject(function($rootScope, $injector){
mockHttpGet('<path>', { /* fake data */ });
input('search.name').enter('mow');
pause();
}));
Isso leva ao seguinte erro:
<$httpBackend listing> has no method 'expectGET'
Então, neste momento, não tenho ideia do próximo passo. Alguém já tentou fazer algo assim, este tipo de stubbing é realmente possível?