Usare Angularjs deride senza effettivamente deridere qualsiasi cosa
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
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.