Estoy intentando usar mockk anyConstructed pero terminando con llamadas faltantes dentro de cada bloque { … }
Estoy tratando de devolver un objeto siempre que se crea un nuevo objeto de una clase.
He intentado usar anyConstructed con un objeto spyk o incluso un objeto mockk de PredictionCheckFunction.
every { anyConstructed<predictioncheckfunction>() } answers { predictionCheckFunction }
Esto resulta en el siguiente error en la línea de arriba:
io.mockk.MockKException: Llamadas faltantes dentro del bloque every { ... }.
En Mockito haría algo como esto:
whenNew(PredictionCheckFunction.class).withNoArguments().thenReturn(predictionCheckFunction);
Quiero asegurarme de que cada creación de PredictionCheckFunction resulte en un objeto predictionCheckFunction.
El ejemplo en esta pregunta https://stackoverflow.com/questions/52742926/how-to-mock-a-new-object-using-mockk me permite ejecutar solo una función en un objeto mock, pero no devolver uno ya creado como en el ejemplo de Mockito anterior thenReturn(predictionCheckFunction);
.
Ejemplo en la pregunta SO mencionada:
mockkConstructor(Dog::class)
every { anyConstructed<dog>().bark() }
Cualquier ayuda sobre cómo hacer esto durante la creación de un nuevo objeto será apreciada.
davy.ai
Para devolver un objeto cada vez que se crea un objeto nuevo de una clase en Kotlin, puedes usar la función
mockkConstructor()
de la librería MockK. Aquí tienes un ejemplo:Este código simulará el constructor de la clase
PredictionCheckFunction
y devolverá el objetopredictionCheckFunction
cada vez que se cree un objeto nuevo de la clase.Ten en cuenta que la función
anyConstructed()
se utiliza para coincidir con cualquier llamada al constructor de la clase simulada. También puedes usar la funciónspecificConstructor()
para coincidir con una llamada de constructor específica.Si te encuentras con el error “Missing calls inside every { … } block”, significa que debes agregar al menos un comportamiento simulado dentro del bloque
every { ... }
. En el ejemplo anterior, agregamos el comportamiento simuladoreturns predictionCheckFunction
.¡Espero que esto sea de ayuda!