반응형
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
반응형
'source' 카테고리의 다른 글
Django Rest Framework - 보기 이름 "user-detail"을 사용하여 하이퍼링크된 관계의 URL을 확인할 수 없습니다. (0) | 2023.07.16 |
---|---|
xml 없이 Ehcache 3 + 스프링 부트 + Java 구성을 구성하려면 어떻게 해야 합니까? (0) | 2023.07.16 |
Oracle: 쿼리를 통해 전체 비율을 얻는 방법은 무엇입니까? (0) | 2023.07.16 |
Python Logging을 사용하여 두 번 나타나는 로그 메시지 (0) | 2023.07.16 |
Git와 명령줄을 사용하여 병합하는 동안 로컬 파일 또는 원격 파일을 유지하는 방법은 무엇입니까? (0) | 2023.07.16 |