Mockito를 사용하는 Test 코드를 Kotlin으로 변환하였을 때, 제대로 되지 않는 문제를 해결하는 과정.
Mock 대상 class가 open class가 아니면 Mock 주입 실패
@Rule 사용할 경우 해당 프로퍼티를 JVM에서는 public field로 접근을 시도하기 때문에 initializationError 를 발생.
-> @JvmField를 사용하여 해결.
NonNull parameter 를 받는 코틀린의 메서드를 테스트할 때,
any, eq, capture 등을 사용할 때, any, eq, capture 등에서 null을 리턴하여 IllegalStateException 발생.
-> null을 강제로 캐스팅하는 wrap메서드 사용
private fun <T> wrap(t: T?): T{
return t as T
}
---
verify(mTasksRepository).saveTask(wrap(any(Task::class.java)))
Mockito를 사용하는 Test 코드를 Kotlin으로 변환하였을 때, 제대로 되지 않는 문제를 해결하는 과정.
Mock 대상 class가 open class가 아니면 Mock 주입 실패
@Rule
사용할 경우 해당 프로퍼티를 JVM에서는 public field로 접근을 시도하기 때문에initializationError
를 발생. ->@JvmField
를 사용하여 해결.NonNull parameter 를 받는 코틀린의 메서드를 테스트할 때,
any
,eq
,capture
등을 사용할 때,any
,eq
,capture
등에서 null을 리턴하여IllegalStateException
발생. -> null을 강제로 캐스팅하는 wrap메서드 사용