【发布时间】:2018-04-24 21:46:48
【问题描述】:
我有如下接口的扩展功能:
import javax.jms.ConnectionFactory
fun ConnectionFactory.foo() {
println("do some stuff")
}
如何模拟函数 foo?
请注意,我在http://mockk.io/#extension-functions 中看到了类和对象的方法,但它不起作用。这个我试过了:
import io.mockk.classMockk
import io.mockk.every
import org.junit.Test
import javax.jms.ConnectionFactory
class ExtensionFunctionTest {
@Test
fun mockExtensionFunction() {
val connectionFactory = classMockk(ConnectionFactory::class)
every { connectionFactory.foo() } returns println("do other stuff")
connectionFactory.foo()
}
}
抛出异常:
io.mockk.MockKException: Missing calls inside every { ... } block.
【问题讨论】:
-
你的扩展函数的文件名是什么?这是完整的可验证示例,还是类不同?
-
该函数在 ConnectionFactory 类之外定义,并且是模块范围的。
标签: kotlin mockito powermock mockk