我正在从Java转换到Kotlin,从Mockito转换到MockK。
我被困在将参数Matcher从Mockito转换到MockK的过程中。
Mockito可以做any()来匹配任何,包括空值和varargs。(进口ArgumentMatchers.any)
例如:
verify(object1).store(any(SomeClass.class));MockK有这方面的东西吗?在这种特殊情况下,它不是任何原始类型。我正在尝试匹配一个类对象。
谢谢!
发布于 2022-01-06 05:17:07
如果您想匹配特定类型,可以这样做。
verify { object1.store(ofType(SomeClass::class)) }发布于 2020-10-02 14:53:49
在莫克克,你可以像这样any()。
verify { object1.store(any()) }发布于 2022-06-05 13:53:58
在Mockito迁移到Mockk的情况下,请考虑以下几点:
使用Mockito将类封装在验证方法中,例如:
verify(object1).store(any(SomeClass.class));在Mockk中,使用lambda with receiver,类似于应用函数(但不返回),例如:
verify{ object1.store(any<SomeClass::class>()) }并回答您的问题,因为指定类型可以使用any,虽然编译器将其标记为不必要的代码,因为它具有类型推断,但是当您重载了一个函数时,这主要是有用的,因此您可以区分每个函数要接收的参数,例如:
class YourClass {
fun someMethod(value: String) {
}
fun someMethod(value: Int) {
}
}
fun test() {
val mock: YourClass = mockk()
verify { mock.someMethod(any<String>()) }
verify { mock.someMethod(any<Int>()) }
} https://stackoverflow.com/questions/60878429
复制相似问题