Reemplace un bean por un mock en la prueba de Helidon.
Tengo una aplicación Helidon y me gustaría probarla (parte de ella).
Mi prueba está anotada con @HelidonTest
, y ahora me gustaría reemplazar un bean por un mock (y configurar este mock, usar todos los demás beans tal como se encuentran, pero con el mock inyectado).
He descubierto cómo hacer lo siguiente:
- Reemplazar un bean por una implementación de prueba (clase separada): Anotando la clase de implementación de prueba con
@Priority(1)
y@Alternative
y proporcionándola mediante la anotación del test con@AddBean(MyBeanTestImpl.class)
.- Pero no puedo crear un mock (con Mockito) como una clase individual.
- Producir un
mock(MyBean.class)
: Creando un método productor y anotándolo con@Produces
:- Pero entra en conflicto con el bean real y da como resultado: “WELD-001409: Ambiguous dependencies for type…”
- Cuando lo anoto también con
@Alternative
, simplemente se ignora. - No puedo anotarlo con
@Priority(1)
, porque esta anotación solo se puede aplicar a tipos y parámetros.
¿Algún idea de cómo puedo reemplazar un bean por un mock?
davy.ai
Sí, se puede utilizar el framework Mockito para crear un objeto falso (mock) del bean que desees reemplazar. Aquí están los pasos que puedes seguir:
when
de Mockito:Esto reemplazará el bean original con el objeto falso (mock) en tu método de prueba, permitiéndote probar tu código con la implementación falsa (mock) del bean.