우리의 내부 angularjs 프로젝트에서, 서비스 중 하나는 $http.head()
전화를 테스트하려고합니다.expectHEAD는 문서화되었지만 구현되지 않았습니까?
테스트를 위해 Fake HTTP backend (angular-mocks
)을 사용하고 있습니다.
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();
}));
다음과 같은 오류에 테스트 결과를 실행 : 다음은 관련 코드입니다
- :
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)
조금 파고 후를, 나는 관련 github에 문제를 발견했습니다 fix($httpBackend): Add missing expectHEAD() and expectOPTIONS() methods
내가 이해하는 한, 그쪽은 각도 모크에는 실제로 expectHEAD()
방법이 없습니다 - 문서화되어 있지만 실제로는 아직 안정된 각도 방출의 일부가 아닙니다.
앞으로 나아갈 수있는 가장 좋은 방법은 무엇입니까?
이 앱은 IE8 (각도 1.3은 dropping support for IE8)에서 실행해야하므로 각도 < = 1.2로 있어야한다는 것에 유의하십시오. 나는 현재에 대해 생각하고 해결 방법의
하나는 get()
와 head()
을 교체하는 것입니다. 이 경우 기존 expectGET()
방법으로 테스트 할 수 있습니다. 그러나 단점에 대해서는 잘 모르겠습니다.
고마워, 나를 위해 일했다, 이것은 확실히 여기 쉬운 옵션이다. 비록 나는 @ dave의 답변이 하향 투표를받을 자격이 없다는 사실에 동의하지 않지만 그는 여전히 도우려고 노력했으며 그의 접근법은 여전히 합법적이다. – alecxe
그 말이 맞습니다. 저는 아직도 비교적 새로운 것입니다. 내 아래 vote를 삭제했습니다. –
downvote를 삭제 해 주셔서 감사합니다. 당신이 더 쉬운 해결책을 제안한 이후 나는 당신의 대답을 받아 들였습니다. 추가 노력을 위해 데이브에게 현상금을 수여했습니다. 희망은 당신에게 공정한 것 같습니다. 다시 한번 감사드립니다. – alecxe