java - Kotlin Mockito 总是返回作为参数传递的对象
问题描述
我试图在我的模拟对象上使用 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] }
}
推荐阅读
- tensorflow - 我可以从 .pb 文件中获取 Keras 模型吗?
- java - 为 Spring Boot json 响应测试集成 OpenAPI 3.0 模式
- prometheus - 记录规则计算后在 Prometheus 中清理指标
- angular - 角度改变组件和隐藏组件
- android - 动画后视图闪烁
- java - 如何使用多线程/线程池实现每隔几秒轮询一次表
- azure-devops - 在 Azure DevOps 中,与相同的 YAML 管道模板相比,经典编辑器模板中的任务缺失
- javascript - 当我创建一个函数时,每次点击里面的点击函数,然后每次点击循环运行。如何防止循环点击
- java - GRPC:用 Java/Scala 制作高吞吐量客户端
- javascript - XDSoft datetimepicker - 如何通过 javascript 动态设置日期