Estrategia para la prueba unitaria de un servicio Spring Cloud
Dada la siguiente configuración de Spring Cloud: Adata-service
con acceso a una base de datos, uneureka-service
para manejar el registro y descubrimiento de servicios y un tercer serviciobusiness-service
que será uno de varios servicios que encapsulan casos de negocios.
Unidad de prueba dedata-service
no hay problema, solo apago eureka a través de
eureka.client.enabled=false
y usar una base de datos en memoria para mis pruebas.
Para acceder aldata-service
debusiness-service
Estoy usando un@FeignClient("data-service")
interfaz anotada llamadaDataClient
cual es@Autowired
donde sea necesario Eureka descubre el servicio si ambos se están ejecutando. Esto funciona bien para una configuración similar a la producción con todos los servicios en ejecución.
Pero ahora quiero probar algunas características de mibusiness-service
. No sería un problema iniciar un servicio de prueba con
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@IntegrationTest("server.port:0")
@SpringApplicationConfiguration(classes = Application.class)
como estoy haciendo endata-service
. El problema es el descubrimiento dependiente de Eureka de miFeignClient
... Entonces mi clase de prueba falla, porque el cableado automático de miDataClient
-La instancia no funciona.
¿Puedo decirle a Spring que use una instancia falsa deDataClient
solo para mis pruebas? O es la única forma de hacer que mis pruebas ejecuten una instancia accesible y en ejecución dedata-service
y mi servidor Eureka?