Стратегия для модульного тестирования Spring Cloud Service
Учитывая следующую настройку Spring Cloud: Adata-service
с доступом к базе данных,eureka-service
обрабатывать реестр услуг и обнаружение и третий сервисbusiness-service
который будет одним из различных сервисов, которые инкапсулируют бизнес-кейсы.
Модульное тестированиеdata-service
нет проблем, я просто отключаю эврика через
eureka.client.enabled=false
и использовать базу данных в памяти для моих тестов.
Чтобы получить доступ кdata-service
отbusiness-service
Я использую@FeignClient("data-service")
аннотированный интерфейс с именемDataClient
который@Autowired
где необходимо. Служба обнаружена Eureka, если оба работают. Это прекрасно работает для производственной установки со всеми работающими сервисами.
Но теперь я хочу провести модульное тестирование некоторых функций моегоbusiness-service
, Не было бы проблемой запустить тестовый сервис с
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@IntegrationTest("server.port:0")
@SpringApplicationConfiguration(classes = Application.class)
как я делаю вdata-service
, Проблема в том, что Эврика-зависимое открытие моегоFeignClient
... Так что мой тестовый класс вылетает, потому что автопроводка мояDataClient
-экземпляр не работает.
Могу ли я сказать Spring, чтобы использовать поддельный экземплярDataClient
только для моих тестов? Или это единственный способ заставить мои тесты запускать доступный, работающий экземплярdata-service
а мой эврика сервер?