준호씨의 블로그
IntelliJ - http 요청 테스트 - HTTP Request - 테스트 스크립트 예제 본문
지난 글에서 IntelliJ에서 제공하는 HTTP Request기능을 간단히 사용해 보았습니다.
http://httpbin.org/get에 GET 요청을 보내면서 accept: application/json 헤더를 붙이려면 아래처럼 하면 됩니다. (### 는 요청을 구분하면서 주석을 달 수 있는 부분입니다. 실제 요청을 보내는 부분은 아닙니다.)
### GET
GET http://httpbin.org/get
accept: application/json
이번에는 HTTP Request에서 테스트 코드를 작성해 보겠습니다.
테스트 코드는 "> {% 테스트 코드 %}"형식으로 작성합니다. 그리고 client.test함수를 이용해서 테스트 코드를 작성하면 됩니다.
### GET
GET http://httpbin.org/get
accept: application/json
> {%
client.test("Request executed successfully", function() {
client.assert(response.status === 200, "Response status is not 200");
var type = response.contentType.mimeType;
client.assert(type === "application/json", "Expected 'application/json' but received '" + type + "'");
var testUrl = "http://httpbin.org/get";
client.assert(response.body.url === testUrl, "Response body.url is not " + testUrl);
});
%}
client.assert함수를 이용해서 테스트 코드를 작성하면 됩니다. response에는 응답 정보가 들어 있습니다. status에는 상태 값, header에는 헤더, body에는 본문 내용이 들어갑니다.
언어는 Javascript를 사용합니다. 다만 조금 아쉬운 점은 ECMAScript 5.1이라서 최신 문법들을 사용할 수 없습니다. Template literals를 못쓰는 건 좀 아쉽네요.
테스트가 성공하면 다음과 같이 나옵니다. 어떤 테스트들이 성공했는지 자세히 나오지 않는 것은 좀 아쉽지만 일단 초록 체크가 뜨면 전부 성공했다는 의미입니다.
만약 실패하는 테스트를 실행하면 다음과 같이 결과가 나옵니다. 실패했을 때 메시지를 일일이 작성해 주어야 된다는 것이 좀 아쉽습니다.
테스트 코드가 길어지면 테스트 스크립트를 따로 분리할 수 있습니다.
예를 들어 test.js파일을 만들어서 > {% ... %} 안에 적었던 내용들을 옮깁니다.
client.test("Request executed successfully", function() {
client.assert(response.status === 200, "Response status is not 200");
var type = response.contentType.mimeType;
client.assert(type === "application/json", "Expected 'application/json' but received '" + type + "'");
var testUrl = "http://httpbin.org/get";
client.assert(response.body.url === testUrl, "Response body.url is not " + testUrl);
});
그리고 HTTP Request내용을 다음처럼 수정합니다.
### GET
GET http://httpbin.org/get
accept: application/json
> test.js
실행해 보면 똑같이 동작하는 것을 확인할 수 있습니다.
다음에는 응답값을 다음 요청에서 활용하는 예제를 만들어 보겠습니다.
'개발이야기' 카테고리의 다른 글
MacOSX - gyp: No Xcode or CLT version detected! 에러 해결 (0) | 2021.04.26 |
---|---|
유닛테스트 코드의 변수명 sut의 정체. SUT - system under test (1) | 2021.04.16 |
IntelliJ - http 요청 테스트 - HTTP Request (0) | 2021.04.04 |
OOAD (Object-oriented analysis and design) (0) | 2021.04.03 |
추천영상 - 그런 REST API로 괜찮은가 Deview 2017 (0) | 2021.04.01 |