J'essaie de tester mes classes et je dois me moquer d'une classe static
. Mon code est le suivant: -
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))
Mais dans la deuxième ligne, il lance une erreur:
"Java.lang.IllegalStateException: any(Context::class.Java) must not be null"
J'ai essayé avec mockito-kotlin et befriending-kotlin-and-mockito sans aucune sortie. Savez-vous comment y remédier?
Mockito retourne souvent null lorsque vous appelez any()
et cela casse les paramètres non null de kotlin.
Dans mockito-kotlin, ils ont une fonction distincte pour cela, appelée anyOrNull () .
Vous pouvez également créer votre propre fonction, ici ils disent que cela devrait également fonctionner.
/**
* Returns Mockito.any() as nullable type to avoid Java.lang.IllegalStateException when
* null is returned.
*/
fun <T> any(): T = Mockito.any<T>()
Ajoutez le code suivant dans votre classe de test:
private fun <T> any(type : Class<T>): T {
Mockito.any(type)
return uninitialized()
}
private fun <T> uninitialized(): T = null as T