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)