Usando Mockito doAnswer en Kotlin
¿Cuál sería el equivalente de Kotlin a este código de Java?
doAnswer(new Answer() { @Override public Object answer(InvocationOnMock invocation) throws Throwable { Design design = new Design(); GetDesign.Listener callback = (GetDesign.Listener) invocation.getArguments()[0]; callback.onSuccess(design); return null; } }).when(someRepository).getDesign(any(GetDesign.Listener.class));
[ACTUALIZACIÓN] Después de probar varias opciones, finalmente lo hice funcionar usando mockito–kotlin . Creo que es la forma más cómoda de implementar doAnswer
. La syntax sigue siendo casi la misma:
- Las testings instrumentadas no se pueden ejecutar en modules de biblioteca Android que tengan files Kotlin
- Cómo escribir Kotlin Unit Test con kotlin-test?
- Cómo importar un directory / package completo en Intellij para fines de testing
- retryWhen () no llama a lo que está dentro de Observable.just ()
- ¿Qué es la testing (0) en este fragment de kotlinlang.org?
doAnswer { callback = it.arguments[0] as AsyncCall.Listener callback.onSuccess("Hello!") null }.`when`(someRepository).execute(any())
El código completo y la configuration build.gradle se pueden encontrar en este repository
doAnswer { val design = Design() val callback = it.arguments[0] as GetDesign.Listener callback.onSuccess(design) null // or you can type return@doAnswer null }.`when`(someRepository).getDesign(any(GetDesign.Listener::class.java))