Kotlin

코프링 모킹 테스트 에러 (kotest, mockk)

ik

iknow5380
질문 종료
30 XP
class SignUpApiTest : BehaviorSpec({

    lateinit var mockMvc: MockMvc
    @MockK
    lateinit var accountRepository: AccountRepository

    beforeTest {
        accountRepository = mockk()
        mockMvc = MockMvcBuilders.standaloneSetup(AccountController(AccountServiceImpl(accountRepository))).build()
    }
    Given("사용자가 회원가입을 시도할때") {

        val email = "[email protected]"
        val password = "password"
        val signForm = SignForm(email, password)
        val requestBody = jacksonObjectMapper().writeValueAsString(signForm)


        When("중복된 이메일이 존재하지 않는다면") {
            every { accountRepository.existsByEmail(email) } returns false
            every { accountRepository.save(any()) } returns Account(email, password)

            Then("200 OK, 'status' to 'success', accountId 응답을 반환한다.") {
                val result = mockMvc
                    .perform(
                        post("/account/sign-up").content(requestBody)
                            .contentType(MediaType.APPLICATION_JSON)
                            .accept(MediaType.APPLICATION_JSON)
                    ).andReturn()
                val status = result.response.status
                status shouldBe HttpStatus.OK.value()
                val contentsMap = JSONObject(result.response.contentAsString)
                contentsMap["status"] shouldBe "success"
            }
        }
    }
})

위 테스트를 실행했을 떄, Request processing failed: io.mockk.MockKException: no answer found for AccountRepository(#5).existsByEmail([email protected]) among the configured answers: ()
에러가 발생합니다...

에러 내용은 AccountRepository가 모킹 되지 않았다는 거 같은데, accountRepository = mockk()로 모킹 해줬는데 왜 안돌아 가는지 모르겠습니다 ㅠ...


불러오는 중...