W naszym wewnętrznym projekcie angularjs jedna z usług ma wywołanie $http.head()
, które próbuję przetestować.expectHEAD jest udokumentowany, ale nie zaimplementowany?
Do testowania używam Fake HTTP backend dostarczonego przez angular-mocks
. Oto odpowiedni kod:
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();
}));
Running wyniki testu do następującego błędu:
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)
po wykopaniu trochę, znalazłem odpowiedni problem GitHub:
co, o ile rozumiem, oznacza t naprawdę nie jest to metoda expectHEAD()
w makietach kątowych - jest udokumentowana, ale w rzeczywistości nie jest jeszcze częścią stabilnego wydania kątowego.
Jaki jest najlepszy sposób postępowania?
Zauważ, że muszę pozostać pod kątem < = 1,2, ponieważ ta aplikacja musi działać na IE8 (Angular 1.3 to dropping support for IE8).
Jednym z obejścia myślę o aktualnie jest zastąpienie head()
z get()
. W takim przypadku mogę przetestować go za pomocą istniejącej metody expectGET()
. Ale nie jestem pewien na temat wad.
Dziękuję, pracowałeś dla mnie, to zdecydowanie łatwiejsza opcja tutaj. Chociaż nie całkiem zgadzam się, że odpowiedź @ dave'a zasługuje na lekcję - nadal próbował pomóc, a jego podejście pozostaje uzasadnione. – alecxe
Tak, to ma sens, wciąż jestem nowy stosunkowo nowy; Usunąłem mój głos w dół –
Dziękuję za usunięcie orzeczenia. Przyjąłem twoją odpowiedź, odkąd pierwszy zaproponowałeś łatwiejsze rozwiązanie. Przyznano nagrodę Dave'owi za dodatkowe wysiłki. Mam nadzieję, że wydaje ci się sprawiedliwa. Dzięki jeszcze raz. – alecxe