Mock 객체를 사용하다보면 JpaRepository.saveAll과 같이 입력값을 그대로 리턴해주고 싶은 경우가 생길 수 있다.
이 경우 returnsArgument를 사용하면 된다.
interface TestTarget {
fun function(arg1: Any, arg2: Any): Any
}
internal class MyRepositoryMockTest : DescribeSpec({
it(" returnsArgument 0은 첫번째 인자를 리턴한다") {
// given
val testTargetMock= mockk<TestTarget>()
// when
every { testTargetMock.function(any(), any()) } returnsArgument 0
// then
testTargetMock.function("Hello", "World".toList()) shouldBe "Hello"
}
it(" returnsArgument 1은 두번째 인자를 리턴한다") {
// given
val testTargetMock= mockk<TestTarget>()
// when
every { testTargetMock.function(any(), any()) } returnsArgument 1
// then
testTargetMock.function("Hello", "World".toList()) shouldBe listOf('W', 'o', 'r', 'l', 'd')
}
})
참고
'Java & Kotlin > Kotlin' 카테고리의 다른 글
JPA entity의 VO로 Kotlin value class 사용하기 (3) | 2022.06.01 |
---|---|
[MockK] 메서드 호출 순서 검증하기 (0) | 2022.04.15 |
observable, vetoable를 통한 프로퍼티 변경 감지 (0) | 2021.11.06 |
by lazy를 통해 지연 초기화 적용하기 (0) | 2021.11.06 |
by 키워드를 사용한 Delegation (0) | 2021.11.06 |
댓글