테스트가 실패했다.
Expecting message to be: "유효하지 않은 타입입니다." but was: "유효하지 않은 타입입니다. 사용 가능한 타입: [A, B, C]" |
에러 타입은 아래와 같이 정의되어 있었다.
import org.springframework.http.HttpStatus
enum class ExceptionType(
val message: String
) {
BUSINESS_ERROR_01_TYPE("유효하지 않은 타입입니다"),
}
에러를 사용하는 곳에서는 아래와 같이, 에러 메시지 뒤에 추가적인 정보를 붙여 expection을 발생시키고 있었다.
if (type == Type.UNKNOWN) {
throw BusinessRuleException(
message = ExceptionType.BUSINESS_ERROR_01_TYPE.message + " 사용 가능한 타입 : " + Type.getValues().toString()
)
}
뒤에 추가 정보를 붙여서 exception을 throw하고 있기에, test assertion에서 에러가 난다.
Expecting message to be: "유효하지 않은 타입입니다." but was: "유효하지 않은 타입입니다. 사용 가능한 타입: [A, B, C]" |
아래는 테스트 코드의 일부.
@Test
fun `잘못된 타입이 전달되면 BusinessRuleException이 발생한다`() {
assertThatThrownBy { // 에러가 발생하는 상황의 서비스 호출 코드}
.isInstanceOf(BusinessRuleException::class.java)
.hasMessage(ExceptionType.BUSINESS_ERROR_01_TYPE.message)
}
hasMessage -> 메시지 내용이 완전히 일치해야 테스트 통과가 된다.
해당 메소드를 hasMessageContaining으로 바꾸니 해결.
@Test
fun `잘못된 타입이 전달되면 BusinessRuleException이 발생한다`() {
assertThatThrownBy { // 에러가 발생하는 상황의 서비스 호출 코드}
.isInstanceOf(BusinessRuleException::class.java)
.hasMessageContaining(ExceptionType.BUSINESS_ERROR_01_TYPE.message)
}
'Programming Language > Kotlin' 카테고리의 다른 글
Corutine 환경에서 API Delay 주가 (0) | 2024.07.08 |
---|---|
return when - unreachable code (0) | 2023.10.29 |