Delphi의 WebMock HTTP 응답 정보
기본값
응답을 지정하지 않고 루트 요청을 저장할 때 기본값은 비어 있지만 성공합니다.
HTTP/1.1 200 OK
content-type: text/plain; charset=utf-8
content-length: 0
이 응답은 상태 코드501 Not Implemented
에만 루트 요청을 저장하지 않는 것과 다르다.그렇다면, 우리는 어떻게 응답을 맞춤형으로 정합니까?사용ToRespond
이 답이다.링크ToRespond
전화를 통해 무엇을 할 수 있는지 봅시다.상태 코드 설정
ToRespond
함수는 선택할 수 있는 매개 변수AResponseStatus
를 받아들여 응답 상태 코드를 지정할 수 있습니다.반환 상태204 No Content
는 다음과 같습니다.WebMock.StubRequest('GET', '/').ToRespond(204);
모든 사람들이 HTTP 상태 코드에 대해 전면적으로 알고 있는 것은 아니기 때문에 감사합니다ToRespond
는 일괄 값을 받아들여 테스트 코드에 설명 기호를 사용할 수 있고 주석을 추가할 필요가 없습니다.WebMock.ResponseStatus
약관에 추가uses
하면 상태204
를 NoContent
라고 할 수 있습니다.WebMock.StubRequest('GET', '/').ToRespond(NoContent);
나는 여기서 잠시 멈추고 웹맥이 제공한 몇 가지 작은 문법적 장점을 지적할 것이다. WithStatus
테스트는 WithStatus
이후 링크ToRespond
를 통해 보다 자세히 설명됩니다.WebMock.StubRequest('GET', '/')
.ToRespond
.WithStatus(204);
// or
WebMock.StubRequest('GET', '/')
.ToRespond
.WithStatus(NoContent);
WithStatus
를 사용하여 사용자 정의 상태 코드와 텍스트를 반환할 수도 있습니다.WebMock.StubRequest('GET', '/')
.ToRespond
.WithStatus(321, 'Back In The Room');
이제 우리는 응답 상태를 어떻게 바꾸는지 알게 되었다.단, 204 No Content
을 되돌려 주지 않으면, 일부 데이터를 되돌려 주기를 원할 수도 있습니다.다음은 본문 내용을 설정하는 것을 살펴봅시다.본문 내용 설정
앞에서 말한 바와 같이 기본 응답 내용은 UTF-8 문자 세트가 있는 0의 일반 텍스트 응답입니다.
WithBody
를 사용하여 본문 내용을 설정합니다.WebMock.StubRequest('GET', '/')
.ToRespond
.WithBody('Hello');
이것은 순수한 텍스트에 좋지만, JSON과 같은 다른 내용을 되돌려 주고 싶을 수도 있습니다.간단합니다. 컨텐트 유형을 사용하여 두 번째 매개변수를 지정합니다.WebMock.StubRequest('GET', '/')
.ToRespond
.WithBody('{ "key": "value" }', 'application/json');
이제 우리는 작은 부분의 데이터로 응답하는 방법을 알게 되었다. 만약 우리가 더 큰 데이터가 필요하거나 텍스트에 표시하기가 쉽지 않다면 어떻게 해야 합니까?이것이 바로 WithBodyFile
의 용무지다.파일에 대한 경로를 제공합니다. WebMock은 정확한 내용 형식으로 파일을 되돌려 보려고 시도합니다.WebMock.StubRequest('GET', '/video')
.ToRespond
.WithBodyFile('video.mp4');
마찬가지로 WithBody
와 마찬가지로 파일 형식이 흔하지 않거나 명확하지 않으면 WithBodyFile
내용 형식의 두 번째 인자를 받아들인다.WebMock.StubRequest('GET', '/video')
.ToRespond
.WithBodyFile('video.3gp', 'video/3gpp');
제목 추가
API를 테스트할 때 특정 제목을 사용하여 응답해야 할 때가 있습니다.예를 들어, ReST API 설계에서는 리소스 및 응답
location
을 생성할 때 대개 201 Created
헤드가 반환됩니다.WebMock.StubRequest('POST', '/resources')
.ToRespond
.WithStatus(Created)
.WithHeader('location', 'http://example.com/resources/1');
제목 목록을 만들기 위해 여러 개의 호출을 WithHeader
에 연결할 수 있습니다.WebMock.StubRequest('GET', '/resources/1')
.ToRespond
.WithHeader('cache-control', 'no-cache')
.WithHeader('last-modified', 'Sat, 13 Feb 2021 12:45:26 GMT');
편의를 위해 Delphi에서 처리TStringList
된 HTTP 헤드가 흔하다는 점을 감안하여 웹Mocks는 WithHeaders
수용TStrings
실례를 제공하였다.이렇게 하면 기존 머리글 값 목록의 머리글을 사용하여 응답을 채울 수 있습니다.var
Headers: TStringList;
begin
Headers := TStringList.Create;
Headers.Values['cache-control'] := 'no-cache';
Headers.Values['last-modified'] := 'Sat, 13 Feb 2021 12:45:26 GMT';
WebMock.StubRequest('GET', '/resources/1')
.ToRespond
.WithHeaders(Headers);
end;
앞의 두 예는 행위상 같다.호출 WithHeaders
은 간단한 쓰기 방식이지만, 제목 집합을 구축했다면, 테스트를 작성할 때 호출을 WithHeader
에 연결하는 것이 더 설명적일 것이라고 믿습니다.결국, 이것은 일종의 선호이다. 너는 자신에게 적합한 것을 선택할 수 있다.지금까지 저희가 뭘 배웠는지.
앞의 글에서 웹맥으로 DunitX 프로젝트를 구축하는 것이 얼마나 쉬운지 보았다.본고에서 우리는 WebMock의 HTTP를 위한 인터페이스 방법을 사용하여 HTTP 응답을 맞춤형으로 만드는 방법을 배웠다.프로젝트에서 시도해 보고, 평론이나via에서 어떻게 진행되고 있는지 알려주세요.찾을 수 있습니다demo code on GitHub.이 시리즈의 다음 부분에서는 곧 "Delphi에서 HTTP 요청과 WebMock을 일치시킨다"고 소개할 것이다.
Reference
이 문제에 관하여(Delphi의 WebMock HTTP 응답 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/rhatherall/all-about-http-responses-with-webmocks-in-delphi-2jfh텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)