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

Kotlin 属性等于的匹配参数对象(使用mock),kotlin,mockk,Kotlin,Mockk,我四处寻找过一个类似的问题,但找不到解决办法 我有两个相同类型对象的实例。举个简单的例子,一个钢笔对象。此类包含大小(Int)和颜色(String)属性。我需要模拟一个函数(比如calculatePrice),它接受这种类型的对象。我希望它返回基于其中一个属性的结果 every { calculatePrice(pen : Pen) } returns 3 every { calculatePrice(pen2 : Pen) } returns 4 因为这个调用嵌套在另一个函数

我四处寻找过一个类似的问题,但找不到解决办法

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

    every { calculatePrice(pen : Pen) } returns 3
    every { calculatePrice(pen2 : Pen) } returns 4
因为这个调用嵌套在另一个函数中,所以我不能保证对象的地址是相同的,所以我试图通过检查属性值(如pen.size)来解决这个问题。如果有一种方法可以确保对象的值是相同的,而不是引用,那也可以解决我的问题

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


如果您有任何建议,我们将不胜感激。

match
如果有效,请参阅

例如:

every { calculatePrice( match { it.size == 2 } ) } returns 3