programing

오류가 발생하는 이유… 예기치 않은 요청 : GET / internalapi / quotes

nasanasas 2021. 1. 8. 08:18
반응형

오류가 발생하는 이유… 예기치 않은 요청 : 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

반응형