gpt4 book ai didi

unit-testing - Kotlin 中的模拟扩展功能

转载 作者:IT老高 更新时间:2023-10-28 13:39:58 24 4
gpt4 key购买 nike

如何在测试中使用 Mockito 或 PowerMock 模拟 Kotlin 扩展功能?由于它们是静态解析的,应该将它们作为静态方法调用还是非静态进行测试?

最佳答案

我认为 MockK 可以帮助你。

它也支持模拟扩展功能

您可以使用它来模拟对象范围的扩展:

data class Obj(val value: Int)

class Ext {
fun Obj.extensionFunc() = value + 5
}

with(mockk<Ext>()) {
every {
Obj(5).extensionFunc()
} returns 11

assertEquals(11, Obj(5).extensionFunc())

verify {
Obj(5).extensionFunc()
}
}

如果你的扩展是一个模块范围的,这意味着它是在一个文件中声明的(而不是在class中),你应该用这种方式模拟它:

data class Obj(val value: Int)

// declared in File.kt ("pkg" package)
fun Obj.extensionFunc() = value + 5

mockkStatic("pkg.FileKt")

every {
Obj(5).extensionFunc()
} returns 11

assertEquals(11, Obj(5).extensionFunc())

verify {
Obj(5).extensionFunc()
}

通过添加 mockkStatic("pkg.FileKt") 行,其中包含声明扩展名的包和文件的名称(示例中为 pkg.File.kt) .

更多信息可以在这里找到:web sitegithub

关于unit-testing - Kotlin 中的模拟扩展功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44382540/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com