在 MockK 单元测试中跳过一个参数,Kotlin

Skip a parameter in MockK unit test, Kotlin

我使用 MockK 库进行单元测试。

测试方法包含对结果没有意义的字符串。我想检查其他变量,但必须定义字符串的行为,因为它们在测试方法中使用。

对于,

every {
    resources.getQuantityString(R.plurals.age, 10, 10)
} returns "10 years"
every {
    resources.getString(
        R.string.surname,
        "surname"
    )
} returns "surname"

如何在这些方法中省略参数?这样我就可以传递任何整数而不是 10,任何字符串而不是“姓氏”?在这种情况下,resources.getString 的结果无关紧要。我不想为测试计算每个参数的值。只是嘲笑一个行为。

您可以使用 answers 而不是 returns,并且根据输入有很多选项 return,例如

every {
    resources.getQuantityString(any(), any(), any())
} answers { "${arg<Int>(1)} years" }

every {
    resources.getString(any(), any())
} answers { secondArg() }

查看 this table for the different parameters you can use in an answer