Kotlin Mockito 总是返回作为参数传递的对象

Whi*_*zil 5 java junit mockito kotlin mockk

我试图在我的模拟对象上使用 Mockito,它应该始终返回作为参数传入的相同对象。我试过这样做:

private val dal = mockk<UserDal> {
    Mockito.`when`(insert(any())).thenAnswer { doAnswer { i -> i.arguments[0] } }
}
Run Code Online (Sandbox Code Playgroud)

但是,这条线总是失败:

io.mockk.MockKException: no answer found for: UserDal(#1).insert(null)
Run Code Online (Sandbox Code Playgroud)

insert(user: User)方法不null作为参数接受(显然User不是可空类型)。

如何使该insert()方法始终返回它作为参数接收的相同对象?

tyn*_*ynn 9

当您使用MockK 时,您不应该使用Mockito

仅使用MockK您可以通过以下方式实现相同的效果:

val dal = mockk<UserDal> {
    every { insert(any()) } returnsArgument 0
}
Run Code Online (Sandbox Code Playgroud)

如果你打算使用Mockito,你应该删除MockK并使用mockito-kotlin

val dal = mock<UserDal> {
    on { insert(any()) } doAnswer { it.arguments[0] }
}
Run Code Online (Sandbox Code Playgroud)