4

リソース 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

4

2 に答える 2