クラスをテストしようとしています。static
クラスをモックする必要があります。私のコードは次のとおりです:-
PowerMockito.mockStatic(ToolTipUtil::class.Java)
PowerMockito.`when`(ToolTipUtil.wasToolTipShown(any(Context::class.Java), "")).thenReturn(true)
val context = mock(Context::class.Java)
presenter.onResume(context)
verify(view).setMenuButtonShown(eq(false))
しかし、2行目ではエラーがスローされます。
"Java.lang.IllegalStateException: any(Context::class.Java) must not be null"
私は mockito-kotlin と befriending-kotlin-and-mockito を使用して、終了せずに試しました。あなたはそれを修正する方法を知っていますか?
Mockitoはany()
を呼び出すとnullを返すことが多く、kotlinのnullではないパラメーターが壊れます。
Mockito-kotlinでは、それらに anyOrNull() と呼ばれる別の関数があります。
独自の関数を作成することもできます here 彼らはこれもうまくいくはずだと言っています。
/**
* Returns Mockito.any() as nullable type to avoid Java.lang.IllegalStateException when
* null is returned.
*/
fun <T> any(): T = Mockito.any<T>()
テストクラスに次のコードを追加します。
private fun <T> any(type : Class<T>): T {
Mockito.any(type)
return uninitialized()
}
private fun <T> uninitialized(): T = null as T