Tuvimos algunas pruebas en Java y Mockito, que estamos convirtiendo progresivamente en Kotlin y Mockk. Sin embargo, hay un problema. Esta sencilla línea:
verify(mockedInteractor).setIndex(1);
Cuando lo movemos a mockk, obtenemos esto:
verify { mockedInteractor.index = 1 }
Esto, por supuesto, pasa las pruebas, ya que en realidad no está verificando que el index se haya establecido en 1. Simplemente está configurando la variable del simulacro en 1. Esto a continuación tiene el mismo efecto.
verify { mockedInteractor.setIndex(1) }
¿Hay alguna manera de verificar los setters?
Podrías intentar capturar:
val fooSlot = slot<String>() val mockBar = mockk<Bar>() every { mockBar.foo = capture(fooSlot) } answers { } assertEquals(fooSlot.captured, "expected")Sí tu puedes:
verify { mockedInteractor setProperty "index" value 1 }Hay más ejemplos aquí https://mockk.io/#private-functions-mocking--dynamic-calls
Solución compacta sin cadena codificada:
verify { mockedInteractor setProperty MockedInteractor::index.name value 1 } donde MockedInteractor es la clase mockedInteractor
Ahora puede relajar este requisito para las funciones de la unidad al definir su simulacro.
val foo = mockk<Foo>(relaxUnitFun = true) Habilitar esta configuración en su simulacro significa que no necesitará usar justRun o cualquier variación de ese código (según la documentación de Mockk ) cuando se invoquen las funciones de verificación de la unidad.