-
Kotest와 MockK를 활용하여 컨트롤러 단위테스트하기프로젝트/미디어 스트리밍 서버 프로젝트 2022. 8. 23. 18:55728x90
개요
JUnit5와 @WebMvcTest를 이용한 컨트롤러 단위 테스트는 익숙하지만 Kotest와 MockK를 활용한 @WevMvcTest를 수행하고자 합니다.
일단 아주 간단한 테스트 컨트롤러를 하나 만들고 단위테스트를 진행해보겠습니다.
TestController
@RestController class TestController { private val test = "test" @GetMapping fun test(): String { return test } }
Controller 단위 테스트
@WebMvcTest(TestController::class) class MyTest3 constructor(@Autowired val mockMvc: MockMvc) : BehaviorSpec({ given("nothing"){ `when`("visit /"){ val result = mockMvc.get("/") { contentType = MediaType.APPLICATION_JSON accept = MediaType.APPLICATION_JSON } then("content is test"){ result.andExpect { status { MockMvcResultMatchers.status().isOk} content {"test"} } } } } })
Could not create instance of class com.idlenara.video.MyTest3. Specs must have a public zero-arg constructor.
위와 같은 에러가 발생하게 됩니다.
코틀린 스타일을 상속받고 실행하면 default constructor가 필요하다는 에러입니다.
해결 방법으로 dependency를 추가해줍니다.
testImplementation("io.kotest.extensions:kotest-extensions-spring:1.1.1")
출처
https://www.baeldung.com/kotlin/mockmvc-kotlin-dsl
https://www.baeldung.com/kotlin/spring-boot-testing
https://velog.io/@wltn716/Kotlin-Spring-Kotest%EC%97%90-Mockk-%EC%A0%81%EC%9A%A9%ED%95%98%EA%B8%B0
https://jaehhh.tistory.com/118
'프로젝트 > 미디어 스트리밍 서버 프로젝트' 카테고리의 다른 글
kotlinDSL + RestDocs 적용하기 (0) 2022.09.28 MultipartFile 컨트롤러 단위 테스트(MockMvc) (0) 2022.08.24 ffmpeg install (Mac OS, Amazon Linux) (0) 2022.08.22 JPA Paging 적용하기 (0) 2022.08.20 Json with MultipartFile (0) 2022.08.19