【问题标题】:How to compare or verify object that does not override equals method?如何比较或验证不覆盖 equals 方法的对象?
【发布时间】:2019-04-08 07:11:22
【问题描述】:

我在 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" }) }

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

【问题讨论】:

    标签: android kotlin mockk


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 2014-05-27
      • 1970-01-01
      相关资源
      最近更新 更多