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()로 모킹 해줬는데 왜 안돌아 가는지 모르겠습니다 ㅠ...
불러오는 중...