Mock Object
를 간편하게 만들게 해주는 라이브러리Mock
객체를 만들기 위해서 사용되는 시간을 줄이기 위해, 자동으로 생성해 주는 라이브러리Mock
객체를 직접 구현하지 않아도 사용할 수 있게 해준다.package com.money.moa.security.jwt
import com.money.moa.member.dto.request.MemberLoginRequest
import com.money.moa.security.user.CustomUserDetailsService
import org.junit.jupiter.api.BeforeEach
import org.junit.jupiter.api.DisplayName
import org.junit.jupiter.api.Test
import org.junit.jupiter.api.assertDoesNotThrow
import org.springframework.beans.factory.annotation.Autowired
import org.springframework.boot.test.context.SpringBootTest
import org.springframework.mock.web.MockHttpServletRequest
import org.springframework.mock.web.MockHttpServletResponse
import org.springframework.security.core.authority.AuthorityUtils
@SpringBootTest
class JwtProviderTest @Autowired constructor(
private val jwtProvider: JwtProvider,
private val userDetailsService: CustomUserDetailsService,
) {
lateinit var accessToken: String
@BeforeEach
fun issueTokenTest() {
// given
val memberLoginRequest = MemberLoginRequest(
email = "haeni@gmail.com",
password = "test1111@@"
)
val userDetails = userDetailsService.loadUserByUsername(memberLoginRequest.email)
val claims = jwtProvider.buildClaims(userDetails.userName, AuthorityUtils.authorityListToSet(userDetails.authorities))
val response = MockHttpServletResponse()
// when
jwtProvider.issueToken(response, claims)
// then
accessToken = response.getHeader("Authorization") as String
}
@Test
@DisplayName("jwt 필터 검증 테스트")
fun filterValidatorTest() {
// given
val request = MockHttpServletRequest()
request.addHeader("Authorization", accessToken)
val response = MockHttpServletResponse()
// when & then
assertDoesNotThrow {
jwtProvider.filterValidator(request, response)
}
}
}
🎸
HttpServletRequest
와HttpServletResponse
를 파라미터로 필요한 경우 테스트 코드에서 각각MockHttpServletRequest
와MockHttpServletResponse
를 사용했다. ✨
[Spring] 테스트 코드 작성, Mock
실무에서 적용하는 테스트 코드 작성 방법과 노하우 Part 1: 효율적인 Mock Test