source

angular2 테스트를 위해 http 오류를 모의하는 방법

lovecheck 2023. 7. 16. 13:41
반응형

angular2 테스트를 위해 http 오류를 모의하는 방법

저는 angular2 서비스에 대한 유닛 테스트를 작성하고 있습니다.코드 조각:

// jasmine specfile

// already injected MockConnection into Http

backend.connections.subscribe ((c: MockConnection) => {
    connection = c;
});

// doing get-request
myServiceCallwithHttpRequest ().subscribe (result => {
    // this test passes!
    expect (result).toEqual ({
        "message": "No Such Object"
    });
    // this test fails, don't know how to get the response code
    expect (whereIsResponseStatus).toBe (404);
});

connection.mockRespond (new Response (new ResponseOptions ({
    body: {
        "message": "No Such Object"
    },
    status: 404
})));

내 서비스:

// service

myServiceCallwithHttpRequest (): Observable<Response> {
    return this.http.get ('/my/json-service').map (res => {
            // res.status == null
            return res.json ()
        })
        .catch (this.handleError); // from angular2 tutorial
}

첫 번째 예상은 OK입니다. 프로그램은 캐치가 아니라 지도 통화에 들어갑니다.그러나 상태 코드 404를 가져오는 방법은 무엇입니까? res.status가 null입니다.

모의 오류가 작동하려면 @angular/http에서 ResponseType을 가져와 모의 응답에 오류 유형을 포함한 다음 응답을 확장하고 오류를 구현해야 합니다.

import { Response, ResponseOptions, ResponseType, Request } from '@angular/http';
import { MockConnection } from '@angular/http/testing';

class MockError extends Response implements Error {
    name:any
    message:any
}

...
handleConnection(connection:MockConnection) {
    let body = JSON.stringify({key:'val'});
    let opts = {type:ResponseType.Error, status:404, body: body};
    let responseOpts = new ResponseOptions(opts);
    connection.mockError(new MockError(responseOpts));
}

소스 코드 검토 중:node_modules\@angular\http\testing\mock_backend.d.ts.MockConnection.mockRespond이미 코드에 있습니다. MockConnection.mockError당신이 필요로 하는 것일 수도 있습니다.그것을 가지고 놀면서 무엇을 얻는지 보세요.

내게 맞는 것:

    mockConnection.mockRespond (new Response (new ResponseOptions ({
        body: {},
        status: 404
    })));

언급URL : https://stackoverflow.com/questions/35436261/how-to-mock-http-error-for-angular2-testing

반응형