멋진 rest api test library
REST API를 테스트하는 라이브러리 중에서 인기 있는 REST-assured(https://rest-assured.io/)를 소개할까 합니다. Java springboot와도 찰떡으로 호환이 되니 쉽게 사용해 볼 수 있을 거예요.
dependencies {
testImplementation("io.rest-assured:rest-assured:3.3.0")
}
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.DEFINED_PORT)
class ControllerTest {
}
테스트하고자 하는 url이 /v1/users/1이고, 응답 형태가 { "name": "피터" }라고 가정하면
import io.restassured.RestAssured.*
import org.hamcrest.Matchers.*
@Test
fun method() {
get("/v1/users/1").
then().
statusCode(200). // 응답 상태 검증
body("name", equalTo("피터")) // 응답 바디 검증
}
요청 Body를 실어서 보낼 수 있습니다.
@Test
fun method() {
val peter = Person(). apply {
name = "피터"
}
given().
body(peter).
post("/v1/users").
then().
statusCode(201)
}
1. 응답 바디 출력하기
get("/v1/users"). body(). prettyPrint()
2. 바디를 객체로 변환하기
val peter = get("/v1/users/1"). as(Person::class.java)
3. body에 jsonPath로 검증
// 응답
{
"lotto":{
"lottoId":5,
"winning-numbers":[2,45,34,23,7,5,3],
"winners":[
{
"winnerId":23,
"numbers":[2,45,34,23,3,5]
},
{
"winnerId":54,
"numbers":[52,3,12,11,18,22]
}
]
}
}
// 테스트 코드
get("/lotto/{id}", 5).
then().
body("lotto.winners.winnerId", hasItems(23, 54));
4.hamcrest matcher
then(). body("url", startsWith("https://hairshop.kakao.com/shops"))