我正在尝试模拟Android上下文,以从资源ID返回字符串。但是,我很难将存根与调用匹配,我认为这是因为varargs。但是,我是mock的新手,所以我可能会很容易错过一些事情。
我这样模拟上下文:
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
最佳答案
1.9.1版引入了一些额外的匹配器来匹配varargs。
https://mockk.io/#varargs