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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top