我有一个类(A 类),为了组织问题,我在另一个类(B 类)的伴随对象中定义了一个扩展函数(A.extension())。
在我的测试中,我需要:
- 要使用真正的 A 类实例。
- 模拟 A.extension()。
- 使用 B 类的模拟实例。
使用 MockK-library 我无法成功模拟该扩展功能。我试过了:
mockkObject(B.Companion) {
every { any<A>().extension() } returns whatIneed
}
结果:尝试运行扩展功能的未模拟版本。
mockkStatic(path.to.B.CompanionKt)
every { any<A>().extension() } returns whatIneed
结果:它没有找到伴随对象。
mockkStatic(A::extension) {
every { any<A>().extension() } returns whatIneed
}
结果:编译错误 -> 'extension' 同时是一个成员和一个扩展。不允许引用此类元素。
我是否遗漏了一些关于如何模拟这个的东西?我在阻止这种模拟的代码结构方面做错了吗?
任何帮助表示赞赏。