$ http GET 요청을 수행하고 로컬에서 응답을 캐시하는 AngularJS 서비스가 있습니다. 이 기능은 동시에 발생하는 여러 통화를 처리하도록 설계되어 최종 통화의 데이터 만 캐시됩니다. 다음 생기면
구체적 :
- 요청은
- 요청의 B는 응답이다
- 요청 완료
결과 완료
그러나 재스민에서이 문제를 테스트하는 데 문제가 있습니다.
두 개의 $ httpBackend.expectGET() 기대를 설정할 수 있지만 요청 된 순서 대로만 플러시 할 수 있습니다.
이$httpBackend.expectGET('/one').respond(200, data1);
$httpBackend.expectGET('/two').respond(200, data2);
myService.doSomething('/one');
myService.doSomething('/two');
$httpBackend.flush('/two');
$httpBackend.flush('/one');
expect(myService.data).toBe(data2);
사람이 이것을 달성 할 수있는 깔끔한 방법을 제안 할 수 있습니다 :
은 기본적으로 그래서 이런 일을 할 수 있어야합니다?
아마 카운트 속성 https://docs.angularjs.org/api/ngMock/service/$httpBackend#flush로 재생할 수 있지만 충분하지 않을 것이라고 생각합니다. –
불행히도 설명서에 카운트에 대한 구체적 내용이 나와 있습니다. "플러시 할 응답 수 (도착한 순서대로)"를 지정하는 속성 어떤 방식 으로든 $ http 또는 $ httpBackend의 동작을 변경하려면 스파이와 똑똑한 무언가를해야 할 것으로 판단됩니다. –