Ric*_*ich 4 kotlin mockk mockito-kotlin
假设我有一个 Java 类 Metrics。我在 Kotlin 中定义了一些关于 Metrics 的扩展函数
fun Merics.expose(name: String, value: Number) {
// do something
}
Run Code Online (Sandbox Code Playgroud)
请注意,Java 类Metrics也有一个名为的方法expose,但具有不同的签名。
我创建了一个测试,在其中模拟了一个对象并调用了应该调用metrics扩展函数的代码路径。expose但是我如何验证这些扩展函数是否被调用呢?
我尝试使用mockk和mockito-kotlin,它们似乎都不知道该metrics对象有一个用不同签名调用的新函数expose。
您无法验证您的模拟是否调用了扩展函数,因为它不是该类的一部分。扩展函数只是一个带有接收器的顶级函数(在您的情况下是一个实例)Metrics)。
但您仍然可以验证代码中是否调用了扩展函数
您可以使用mockkStatic来完成此操作。您正在传递(生成的)扩展函数的路径。假设您Metrics在 package 中创建了扩展函数org.com。扩展类应在以下位置生成:com.org.MericsExtensionKt。
想要验证对扩展函数的调用的测试可能如下所示:
@Test
fun check_metrics_expose_extension_was_called() {
mockkStatic("com.org.MericsExtensionKt")
// call your function that is calling Metrics.expose()
// classUnderTest.someFunction()
// this verifies a call to the extension function and their parameters
verify { any<Metrics>().expose(name = any(), value = any()) }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5199 次 |
| 最近记录: |