我在尝试模拟方法时遇到问题
示例(使用mockito-kotlin 5.2.1、mockito-core 5.11.0、kotlin 1.9.23、kotest-assertions-core 5.6.2)
class TheBug {
@Test
fun test(): Unit = runBlocking{
val service = mock<MyService> {
onBlocking {
with(any<MyContext>()) {
myMethod()
}
}.doReturn(true)
}
with(MyContext("toto")) {
service.myMethod() shouldBe true
}
}
}
class MyService {
context(MyContext)
suspend fun myMethod(): Boolean {
return true
}
}
data class MyContext(val string: String)
测试结果是
java.lang.NullPointerException: Cannot invoke "java.lang.Boolean.booleanValue()"
如果方法
知道如何绕过它吗? 不想因此删除一些单元测试......
升级到 kotlin 2.0 后此问题已修复