테스트 코드 작성

두주·2024년 2월 13일
0

TIL

목록 보기
54/58

테스트 코드를 작성하고 있다.

@Import(value = [QueryDslSupport::class])
@SpringBootTest
@AutoConfigureMockMvc
@ActiveProfiles("test")
@ExtendWith(MockKExtension::class)
class PostControllerTest @Autowired constructor(
    private val mockMvc : MockMvc,
    private val jwtPlugin: JwtPlugin
) : DescribeSpec({

    afterContainer {
        clearAllMocks()
    }

    val postService = mockk<PostService>()


//    describe("searchByNickname은"){
//        context("nickname을 정확하게 입력했을 때"){
//            it("pagenation이 정상적으로 적용되어야 한다.") {
//                val nickname = "admin"
//                val pageable = PageRequest.of(0,5, Sort.by("created_at"))
//
//                every { postService.searchByNickname(pageable, nickname) } returns mockk()
//
//                mockMvc.perform(
//                    MockMvcRequestBuilders.get("/api/v1/posts/nickname")
//                    .param("nickname", nickname))
//                    .andExpect(MockMvcResultMatchers.status().isOk)
//
//                verify { postService.searchByNickname(pageable, nickname) }
//
//            }
//        }
//    }
//
//
//    describe("searchByNickname에서") {
//        context("Nickname을 찾지 못한 경우") {
//            it("UserNotFoundException이 발생해야 한다.") {
//                val nickname = "nonexistent"
//                val pageable = PageRequest.of(0, 5, Sort.by("created_at"))
//                val userId = 1L
//
//                every { postService.searchByNickname(pageable, nickname) } throws UserNotFoundException(userId)
//
//                assertThrows<UserNotFoundException> {
//                    mockMvc.perform(MockMvcRequestBuilders.get("/api/v1/posts/nickname")
//                        .param("nickname", nickname))
//                }
//
//                verify { postService.searchByNickname(pageable, nickname) }

            }
        }
    }

})

Controller에 대해 테스트를 진행해 보고 싶은데,
어떻게 테스트 코드를 작성해야 되는지 전혀 감이 안온다.

테스트가 완료될 때 까지 계속 변경된 내용을 해당 포스트에 수정할 예정이다.

2024-02-13


profile
야옹.

0개의 댓글