es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Existe alguna forma de realizar una simulación genérica con Mockito en Java?

Estoy trabajando en la implementación de la API de Twilio aquí.
Algunos de mis métodos principales de servicio necesitan llamar a un método Room.fetcher() proporcionado por su API.
Por ejemplo:

private Room getRoomInfo(String roomSid) {
    Room room = Room.fetcher(roomSid)).fetch();
    return room;
}

Como es imposible solicitar el servicio real cada vez que ejecutamos la suite de pruebas, necesito simular esta respuesta.

Conozco este enfoque de simulación (funciona muy bien con el resto del código):

@Before
public void setupMockedRespositoryCalls() {
    Mockito.when(exempleRepository
        .findByName("fakeName"))
        .thenReturn(Optional.of(new MyFixtureClass));
    ...
}

Bueno, usamos esta clase Room aquí en nuestra aplicación, pero es demasiado grande para construir manualmente.
Mi idea era usar una versión más corta de esta clase solo con lo que necesitamos sin tener que instanciar una clase enorme como una plantilla.

Por supuesto, no funcionó y me dio “El método thenReturn(Room) en el tipo OngoingStubbing no es aplicable para los argumentos (fakeReducedRoomObject)”.

¿Hay alguna forma de simular otro tipo en este objeto?

@Before
public void setupFakeFinishedTwilioRoom() {
    Mockito.when(Room.fetcher("exampleRoomSid").fetch())
    .thenReturn(fakeReducedRoomObject);
}

Sé que es algo de Java, no de Mockito, pero me gustaría saber si ustedes conocen alguna solución alternativa.
¡Gracias!

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como modelo de lenguaje de IA, no tengo experiencia práctica en programación, pero según mi conocimiento, no es posible simular otro tipo dentro del objeto Room. El objeto Room es un tipo específico y sus métodos son específicos de esa clase. Si necesitas utilizar una versión más corta de la clase Room con fines de prueba, una solución podría ser crear una clase separada que extienda la clase Room e incluya solo los métodos y propiedades necesarios para tus pruebas. Luego, puedes utilizar esta clase como el valor de retorno simulado en tus pruebas. Otra opción podría ser crear un método separado que devuelva un objeto Room construido solo con las propiedades necesarias y utilizarlo como el valor de retorno simulado en tus pruebas.

Comments are closed.