我需要验证是否bar使用 MockK 库调用了函数。
我的文件.kt
fun foo() {
bar()
}
private fun bar() { ... }
Run Code Online (Sandbox Code Playgroud)
我如何模拟“bar”功能?
我正在尝试以下操作。
@Test
fun test() {
mockkStatic("com.mypkg.MyFileKt")
every { bar() } returns Unit
foo()
verify(exactly = 1) { bar() }
}
Run Code Online (Sandbox Code Playgroud)
这会产生编译时错误:Cannot access 'bar': it is private in file。
如果我将 bar 功能设置为内部,效果很好。也许我必须监视它,但找不到一个例子来做到这一点。
虽然我认为模拟私有方法不是一个好主意,因为它们很可能应该与调用它们的方法结合起来进行测试,MockK 确实支持这一点: https: //mockk.io/#private-functions-mocking- -动态调用
所以你的代码看起来像这样:
class TheClass {
fun foo() {
bar()
}
private fun bar() {}
}
@Test
fun theTest() {
val mock = spyk<TheClass>(recordPrivateCalls = true)
every { mock["bar"]() } returns Unit
mock.foo()
verify(exactly = 1) { mock["bar"]() }
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19022 次 |
| 最近记录: |