我试图以这种方式在我的模拟对象上使用Mockito,使它始终应返回作为参数传入的同一对象。我尝试这样做,如下所示:
private val dal = mockk<UserDal> {
Mockito.`when`(insert(any())).thenAnswer { doAnswer { i -> i.arguments[0] } }
}
但是,此行始终失败,并带有:
io.mockk.MockKException: no answer found for: UserDal(#1).insert(null)
insert(user: User)
方法不接受null
作为参数(显然User
不是可为空的类型)。如何使
insert()
方法始终返回作为参数接收的同一对象? 最佳答案
使用MockK时,不应使用Mockito。
仅使用MockK,您可以通过以下方法实现相同的目的:
val dal = mockk<UserDal> {
every { insert(any()) } returnsArgument 0
}
如果打算使用Mockito,则应删除MockK并使用mockito-kotlin:
val dal = mock<UserDal> {
on { insert(any()) } doAnswer { it.arguments[0] }
}