Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Archives
Today
Total
관리 메뉴

개발자되기 프로젝트

JUnit Test 본문

1. @WebMvcTest, @AutoConfigureMockMvc


MVC를 test하기 위해서는 모든 SpringBoot를 불러올 필요가 없음.

@WebMvcTest
@AutoConfigureMockMvc
internal class ExceptionApiControllerTest {
}

 

 

2. MockMvc


@Autowired
lateinit var mockMvc: MockMvc

 

 

3. Test1


@Test
fun helloTest(){
    mockMvc.perform(
        MockMvcRequestBuilders.get("/api/exception/hello")
    ).andExpect(
        MockMvcResultMatchers.status().isOk
    ).andExpect(
        MockMvcResultMatchers.content().string("hello")
    ).andDo(MockMvcResultHandlers.print())
}

 

 

4. Test2


@Test
fun getTest() {
    val queryParameters = LinkedMultiValueMap<String, String>()
    queryParameters.add("name", "abc")
    queryParameters.add("age", "20")

    mockMvc.perform(
        MockMvcRequestBuilders.get("/api/exception").queryParams(queryParameters)
    ).andExpect(
        MockMvcResultMatchers.status().isOk
    ).andExpect(
        MockMvcResultMatchers.content().string("abc 20")
    )
}

@Test
fun getTestFail() {
    val queryParameters = LinkedMultiValueMap<String, String>()
    queryParameters.add("name", "abc")
    queryParameters.add("age", "5")

    mockMvc.perform(
        MockMvcRequestBuilders.get("/api/exception").queryParams(queryParameters)
    ).andExpect(
        MockMvcResultMatchers.status().isBadRequest
    ).andExpect(
        MockMvcResultMatchers.content().contentType(MediaType.APPLICATION_JSON)
    ).andExpect(
        MockMvcResultMatchers.jsonPath("\$.result_code").value("FAIL")
    ).andExpect(
        MockMvcResultMatchers.jsonPath("\$.errors[0].field").value("age")
    ).andExpect(
        MockMvcResultMatchers.jsonPath("\$.errors[0].value").value("5")
    )
}

 

 

5. Test3


@Test
fun postTest() {
    val userRequest = UserRequest().apply {
        this.name = "abc"
        this.age = 10
        this.phoneNumber = "010-1111-1111"
        this.address = "서울"
        this.email = "aaa@naver.co"
        this.createdAt = "2020-01-01 10:00:00"
    }

    val json = jacksonObjectMapper().writeValueAsString(userRequest)

    mockMvc.perform(
        MockMvcRequestBuilders.post("/api/exception")
            .content(json)
            .contentType(MediaType.APPLICATION_JSON)
    ).andExpect(
        MockMvcResultMatchers.status().isOk
    ).andExpect(
        MockMvcResultMatchers.jsonPath("\$.name").value("abc")
    )

}

@Test
fun postTestFail() {
    val userRequest = UserRequest().apply {
        this.name = "abc"
        this.age = -1
        this.phoneNumber = "010-1111-1111"
        this.address = "서울"
        this.email = "aaa@naver.co"
        this.createdAt = "2020-01-01 10:00:00"
    }

    val json = jacksonObjectMapper().writeValueAsString(userRequest)

    mockMvc.perform(
        MockMvcRequestBuilders.post("/api/exception")
            .content(json)
            .contentType(MediaType.APPLICATION_JSON)
    ).andExpect(
        MockMvcResultMatchers.status().isBadRequest
    ).andExpect(
        MockMvcResultMatchers.jsonPath("\$.name").value("abc")
    )

}

 

6. GitHub


 

GitHub - bsh6463/KotlinSpring: GET

GET. Contribute to bsh6463/KotlinSpring development by creating an account on GitHub.

github.com

 

Comments