Nel nostro progetto angularjs interno, uno dei servizi ha la chiamata $http.head()
che sto tentando di testare.expectHEAD è documentato ma non implementato?
Per il test, sto usando Fake HTTP backend fornito da angular-mocks
. Ecco il codice rilevante:
it('handle status code 200', inject(function ($httpBackend, ConnectionService) {
spyOn(Math, 'random').andReturn(0.1234);
httpBackend = $httpBackend;
httpBackend.expectHEAD('ping?rand=1234').respond(200);
ConnectionService.sendRequest();
httpBackend.flush();
expect(ConnectionService.stats.packetsReceived).toEqual(5);
httpBackend.verifyNoOutstandingExpectation();
httpBackend.verifyNoOutstandingRequest();
}));
esecuzione i risultati del test nel seguente errore:
PhantomJS 1.9.7 (Mac OS X) connection service tests sendRequest function handle status code 200
FAILED TypeError: 'undefined' is not a function (evaluating 'httpBackend.expectHEAD('ping?rand=1234')')
at /path/to/app/app-connection-service_test.js:66
at d (/path/to/app/bower_components/angular/angular.min.js:35)
at workFn (/path/to/app/bower_components/angular-mocks/angular-mocks.js:2159)
Dopo aver scavato un po ', ho trovato il problema github rilevanti:
che, per quanto ho capito, significa che Non c'è davvero il metodo expectHEAD()
in angock-mock: è documentato, ma, in realtà, non fa ancora parte di una versione angolare stabile.
Qual è il modo migliore per procedere?
Nota che devo stare con angolare < = 1.2, poiché questa applicazione deve essere eseguita su IE8 (Angular 1.3 è dropping support for IE8).
Una delle soluzioni che sto pensando al momento è quello di sostituire head()
con get()
. In questo caso, posso testarlo con il metodo esistente expectGET()
. Ma non sono sicuro degli svantaggi.
Grazie, ha lavorato per me, questa è sicuramente un'opzione più facile qui. Anche se non sono del tutto d'accordo sul fatto che la risposta di @ dave merita un downvote - ha comunque cercato di aiutare e il suo approccio rimane legittimo. – alecxe
Sì, è logico, sono ancora relativamente nuovo; Ho rimosso il mio voto negativo –
Grazie per aver rimosso il downvote. Ho accettato la tua risposta dal momento che per prima cosa hai proposto la soluzione più semplice. Premiato con Dave per gli sforzi extra. Spero che ti sembri giusto. Grazie ancora. – alecxe