リソース ID から文字列を返すために Android コンテキストをモックしようとしています。ただし、スタブを呼び出しに一致させるのに問題があります。可変引数が原因だと思います。ただし、私はモックを初めて使用するため、非常に簡単なものを見逃す可能性があります。
私はこのようにコンテキストをモックします:
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