Estratégia para teste de unidade de um serviço Spring Cloud
Dada a seguinte configuração do Spring Cloud: Adata-service
com acesso a um banco de dados, umeureka-service
para lidar com registro e descoberta de serviços e um terceiro serviçobusiness-service
que será um dos vários serviços que encapsulam casos de negócios.
Teste de unidadedata-service
não tem problema, eu apenas desligo o eureka via
eureka.client.enabled=false
e use um banco de dados na memória para meus testes.
Para acessar odata-service
debusiness-service
Estou usando um@FeignClient("data-service")
interface anotada denominadaDataClient
qual é@Autowired
onde for necessário. O serviço é descoberto pelo Eureka, se ambos estiverem em execução. Isso funciona bem para uma configuração de produção com todos os serviços em execução.
Mas agora eu quero testar alguns recursos do meubusiness-service
. Não seria um problema iniciar um serviço de teste com
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@IntegrationTest("server.port:0")
@SpringApplicationConfiguration(classes = Application.class)
como eu estou fazendodata-service
. O problema é a descoberta dependente de Eureka do meuFeignClient
... Então, minha classe de teste falha, porque a ligação automática do meuDataClient
-instance não funciona.
Posso dizer ao Spring para usar uma instância falsa deDataClient
apenas para os meus testes? Ou é a única maneira de obter meus testes executando uma instância acessível e em execução dedata-service
e meu servidor Eureka?