Usando simulações angularjs sem realmente zombar de nada
Pergunta
Estou escrevendo alguns testes para nosso aplicativo e incluí angularjs-mocks.js para poder usar as ótimas funções DSL que vêm com ele.
Mas não quero zombar das solicitações $ http, já que estou integrando esse aplicativo ao back-end de um cliente que está em constante fluxo e quero testar respostas reais.
Qual é a melhor (mais fácil) maneira de usar o back-end http real nesta situação?
EDITAR:
Eu encontrei uma solução potencial, que é usar isto:
$httpBackend.whenPOST(/.*/).passThrough()
Mas como mencionei abaixo, não está funcionando, possivelmente quebrado?Eu recebo este erro:
Error: Unexpected request: POST /some/url/here No more request expected
Abri um problema aqui: https://github.com/angular/angular.js/issues/1434
Solução
Eu descobri uma solução rápida e suja para o problema:Comentando a linha onde $httpBackend é substituído (1365 em angular-mocks-1.0.2.js).
angular.module('ngMock', ['ng']).provider({
$browser: angular.mock.$BrowserProvider,
$exceptionHandler: angular.mock.$ExceptionHandlerProvider,
$log: angular.mock.$LogProvider,
//$httpBackend: angular.mock.$HttpBackendProvider,
$rootElement: angular.mock.$RootElementProvider
}).config(function($provide) {
$provide.decorator('$timeout', function($delegate, $browser) {
$delegate.flush = function() {
$browser.defer.flush();
};
return $delegate;
});
});
Isso provavelmente quebra outra coisa, mas me permite testar o que preciso e não afeta o aplicativo de produção, então está tudo bem para mim.Esperançosamente, no futuro, haverá uma maneira integrada de fazer isso.