MockK 无法模拟在 class 之外定义的函数
MockK failes to mock functions defined outside of their class
据我所知,MockK 无法模拟在包级别定义的函数(而不是在它们所属的 class 中)。这是一个小例子:
package some.package
class A {}
class B {}
fun A.getB() : B {
println("real getB called!")
return B()
}
还有一个 class 来测试它:
class Test {
@MockK
private lateinit var a : A
@BeforeMethod
fun setUp() {
init(this)
val bMock = mockk<B>()
every { a.getB() } returns bMock
}
@Test
fun test() {
a.getB()
}
}
此测试失败并显示类似 Missing calls inside every { ... } block
的消息。但是如果我将函数 getB()
移动到 class A
中,那么测试就会成功。我找不到有关此行为的任何文档。有什么解决方法吗?不幸的是,在我的实际项目中,我无法将函数移动到 class 中。还有其他方法可以解决吗?
您需要引用您正在使用 mockkStatic
模拟的扩展函数。这是针对 类.
之外的扩展函数
mockkStatic(a::getB)
据我所知,MockK 无法模拟在包级别定义的函数(而不是在它们所属的 class 中)。这是一个小例子:
package some.package
class A {}
class B {}
fun A.getB() : B {
println("real getB called!")
return B()
}
还有一个 class 来测试它:
class Test {
@MockK
private lateinit var a : A
@BeforeMethod
fun setUp() {
init(this)
val bMock = mockk<B>()
every { a.getB() } returns bMock
}
@Test
fun test() {
a.getB()
}
}
此测试失败并显示类似 Missing calls inside every { ... } block
的消息。但是如果我将函数 getB()
移动到 class A
中,那么测试就会成功。我找不到有关此行为的任何文档。有什么解决方法吗?不幸的是,在我的实际项目中,我无法将函数移动到 class 中。还有其他方法可以解决吗?
您需要引用您正在使用 mockkStatic
模拟的扩展函数。这是针对 类.
mockkStatic(a::getB)