首页 > 解决方案 > 如何比较或验证不覆盖 equals 方法的对象?

问题描述

我在 Kotlin (Android) 中使用 mockk 进行单元测试。

我想验证一个函数是否被调用:

    verify { obj.callSomething("param1", Param2("A", "B")) }

在这种情况下Param2,生成的 Java 类不会覆盖equals方法,因此验证总是失败。

我尝试使用match,但失败消息根本没有帮助。

    verify { obj.callSomething("param1", match { it.a == "A" && it.b == "B" }) }

有没有更好或更正确的方法来做到这一点?

标签: androidkotlinmockk

解决方案


您可以使用withArg在验证调用中的参数上运行断言和其他任意代码。使用assertEquals会给你更好的错误信息。

verify {
  obj.callSomething("param1", withArg {
    assertEquals("A", it.a)
    assertEquals("B, it.b)
  })
}

推荐阅读