【发布时间】:2019-01-23 12:06:15
【问题描述】:
我正在尝试模拟 Android 上下文以从资源 id 返回一个字符串。但是我无法将存根与调用匹配,我认为这是因为可变参数。但是我是新手,所以我可能会错过一些非常容易的事情。
我以这种方式模拟上下文:
val context = mockk<Context>()
every { context.getString(any(), any()) } returns stringToReturn
但是在对象上调用 getString 时会抛出以下异常:
io.mockk.MockKException: no answer found for: Context(#1).getString(2131689544, [])
如果它很重要,我会在被测类中调用类似于此的函数。 formatArgs 可以为空,但不必:
protected fun foo(stringResource: Int, vararg formatArgs: Any) {
val s = context.getString(errorMessageStringResource, *formatArgs)
知道如何解决这个问题吗?
您可以在此处检查项目并重现异常:Github Project
【问题讨论】:
-
我没有投反对票,但认为此类事情应仅作为问题报告。关于 SO 的问题更多是针对文档等中缺少的内容
-
@oleksiyp mockk 的文档没有描述如何处理可变参数,因此文档中缺少它。当问这个问题时,我不清楚这是库的问题,我仍然不确定没有比回退到不同的模拟框架更好的解决方法。也许有人还有一个我想不出来的想法。