首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ArgumentMatchers in MockK

ArgumentMatchers in MockK
EN

Stack Overflow用户
提问于 2020-03-27 00:55:42
回答 3查看 2.2K关注 0票数 3

我正在从Java转换到Kotlin,从Mockito转换到MockK。

我被困在将参数Matcher从Mockito转换到MockK的过程中。

Mockito可以做any()来匹配任何,包括空值和varargs。(进口ArgumentMatchers.any)

例如:

代码语言:javascript
复制
verify(object1).store(any(SomeClass.class));

MockK有这方面的东西吗?在这种特殊情况下,它不是任何原始类型。我正在尝试匹配一个类对象。

谢谢!

EN

回答 3

Stack Overflow用户

发布于 2022-01-06 05:17:07

如果您想匹配特定类型,可以这样做。

代码语言:javascript
复制
verify { object1.store(ofType(SomeClass::class)) }
票数 3
EN

Stack Overflow用户

发布于 2020-10-02 14:53:49

在莫克克,你可以像这样any()

代码语言:javascript
复制
verify { object1.store(any()) }
票数 0
EN

Stack Overflow用户

发布于 2022-06-05 13:53:58

在Mockito迁移到Mockk的情况下,请考虑以下几点:

使用Mockito将类封装在验证方法中,例如:

代码语言:javascript
复制
verify(object1).store(any(SomeClass.class));

在Mockk中,使用lambda with receiver,类似于应用函数(但不返回),例如:

代码语言:javascript
复制
verify{ object1.store(any<SomeClass::class>()) }

并回答您的问题,因为指定类型可以使用any,虽然编译器将其标记为不必要的代码,因为它具有类型推断,但是当您重载了一个函数时,这主要是有用的,因此您可以区分每个函数要接收的参数,例如:

代码语言:javascript
复制
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>()) }
} 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60878429

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档