Domanda

Sto scrivendo un certo test per la nostra app, e ho incluso Angularjs-Deller.js, quindi posso usare le belle funzioni DSL che vengono con esso.

Ma non voglio effettivamente deridere le richieste $ HTTP, dal momento che sto integrando questa app con il back-end di un cliente costantemente in flusso, e voglio testare contro risposte reali.

Qual è il modo migliore (più semplice) per utilizzare il vero backend HTTP in questa situazione?

Modifica:

Ho trovato una soluzione potenziale, che è usare questo:

$httpBackend.whenPOST(/.*/).passThrough()
.

Ma come ho detto di seguito, non funziona, possibilmente rotto?Ottengo questo errore:

Error: Unexpected request: POST /some/url/here No more request expected
.

Ho aperto un problema qui: https://github.com/angular/Angular.js / problemi / 1434

È stato utile?

Soluzione

Ho capito una soluzione rapida e sporca al problema: commentare la linea in cui $ HTTPBackend è sovrascritta (1365 in angolari-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;
  });
});
.

Questo probabilmente si rompe qualcos'altro, ma mi consente di testare ciò che devo testare e non influisce sull'app di produzione, quindi va bene con me.Speriamo che in futuro ci sarà un modo incorporato per farlo.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top