오류가 발생하는 이유… 예기치 않은 요청 : GET / internalapi / quotes
내 각도 앱에서 다음 서비스를 정의했습니다.
services.factory('MyService', ['Restangular', function (Restangular) {
return {
events : { loading : true },
retrieveQuotes : function() {
return Restangular.all('quotes').getList().then(function() {
return { hello: 'World' };
});
}
};
}]);
테스트하기 위해 다음 사양을 작성하고 있습니다.
describe("MyService", function () {
beforeEach(module('MyApp'));
beforeEach(module("restangular"));
var $httpBackend, Restangular, ms;
beforeEach(inject(function (_$httpBackend_, _Restangular_, MyService) {
ms = MyService;
$httpBackend = _$httpBackend_;
Restangular = _Restangular_;
}));
it("retrieveQuotes should be defined", function () {
expect(ms.retrieveQuotes).toBeDefined();
});
it("retrieveQuotes should return array of quotes", function () {
$httpBackend.whenGET("internalapi/quotes").respond({ hello: 'World' });
ms.retrieveQuotes();
$httpBackend.flush();
});
});
테스트를 실행할 때마다 첫 번째 테스트는 통과하지만 두 번째 테스트에서는 오류가 발생합니다.
Error: Unexpected request: GET /internalapi/quotes
내가 도대체 뭘 잘못하고있는 겁니까?
편집하다:
내가 설정했던 밝혀졌다 Restangular
...과 같이 RestangularProvider.setBaseUrl("/internalapi");
. 그러나 나는 internalapi/quotes
. "/"가 없음을 확인하십시오. 슬래시를 추가하면 /internalapi/quotes
모두 좋았습니다. :)
GET 요청을 기대하도록 $ httpBackend에 알려야합니다.
describe("MyService", function () {
beforeEach(module('MyApp'));
beforeEach(module("restangular"));
var Restangular, ms;
beforeEach(inject(function (_Restangular_, MyService) {
ms = MyService;
Restangular = _Restangular_;
}));
it("retrieveQuotes should be defined", function () {
expect(ms.retrieveQuotes).toBeDefined();
});
it("retrieveQuotes should return array of quotes", inject(function ($httpBackend) {
$httpBackend.whenGET("internalapi/quotes").respond({ hello: 'World' });
//expect a get request to "internalapi/quotes"
$httpBackend.expectGET("internalapi/quotes");
ms.retrieveQuotes();
$httpBackend.flush();
}));
});
또는 당신은 당신을 넣을 수 있습니다 respond()
당신에 expectGET()
. 나는 모든 테스트에서 응답을 정의 할 필요가없는 방식으로 whenGET()
진술을하는 beforeEach()
것을 선호합니다 .
//expect a get request to "internalapi/quotes"
$httpBackend.expectGET("internalapi/quotes").respond({ hello: 'World' });
ms.retrieveQuotes();
$httpBackend.flush();
I had the same problem as you guys. My solution was to add a '/' at the start of the URL-parameter of the .expectGET. Using your example:
$httpBackend.expectGET("/internalapi/quotes").respond({ hello: 'world'})
Best of luck
ReferenceURL : https://stackoverflow.com/questions/18147606/why-do-i-receive-error-unexpected-request-get-internalapi-quotes
'programing' 카테고리의 다른 글
argparse가있는 디렉토리 경로 유형 (0) | 2021.01.08 |
---|---|
NOP 썰매는 어떻게 작동합니까? (0) | 2021.01.08 |
Xamarin Forms에서 푸시 알림을 사용하는 방법 (0) | 2021.01.08 |
HTML div에서 마크 다운을 어떻게 래핑 할 수 있습니까? (0) | 2021.01.08 |
중지 된 Docker 컨테이너를 다시 시작하는 방법 (0) | 2021.01.08 |