匹配属性等于的参数对象(使用 Mockk)

GiH*_*GiH 12 kotlin mockk

我四处寻找类似的问题,但找不到解决方案。

我有几个相同类型对象的实例。举一个简单的例子,一个 Pen 对象。此类包含大小(Int)和颜色(String)属性。我需要模拟一个接受这种类型对象的函数(例如calculatePrice)。我希望它根据其中一个属性返回结果。

    every { calculatePrice(pen : Pen) } returns 3
    every { calculatePrice(pen2 : Pen) } returns 4
Run Code Online (Sandbox Code Playgroud)

由于此调用嵌套在另一个函数中,因此我无法保证对象的地址相同,因此我尝试通过检查属性值(例如 pen.size)来解决此问题。如果有一种方法可以确保对象的相同,而不是引用相同,那也可以解决我的问题。

使用 Mockito,我会使用 argThat(pen -> pen.size() == 2)

任何建议将不胜感激。

Cas*_* Lo 18

match应该可以,请参阅https://mockk.io/#matchers

例如:

every { calculatePrice( match { it.size == 2 } ) } returns 3
Run Code Online (Sandbox Code Playgroud)