Макет Eureka Feign Client для Unittesting
Я использую eureka и симуляцию Spring Cloud для связи между некоторыми сервисами (скажем, A и B). Теперь я хотел бы протестировать мой уровень обслуживания одного сервиса (A). Проблема в том, что эта служба (A) использует симулированного клиента для запроса некоторой информации о другой службе (B).
При запуске юнит-тестов без какой-либо специальной настройки выдается следующее исключение:java.lang.RuntimeException: com.netflix.client.ClientException: Load balancer does not have available server for client: service-b
=> но я не хочу, чтобы какой-либо сервер работал.
У меня вопрос: есть ли способ издеваться над симулируемым клиентом, чтобы я мог протестировать мой сервис (A) без запуска экземпляра eureka и сервиса (B)?
Редактировать: я закончил создание заглушки для симулированного клиента. Заглушка помечена как основной компонент, чтобы заставить пружину создавать заглушку в моих тестах.
Это решение, которое я придумал.
//the feign client
@FeignClient("user")
public interface UserClient {
UserEntity getUser();
}
//the implementation i use for the tests
@Component
@Primary //mark as primary implementation
public class UserClientTestImpl implements UserClient {
@Override public UserEntity getUser() {
return someKindOfUser;
}
}