스프링 클라우드 컨트랙트 공식 레퍼런스를 한글로 번역한 문서입니다.
전체 목차는 여기에 있습니다.
Stub Runner는 Spring Cloud와 통합할 수 있다.
실생활의 예시는 다음을 참고해라:
목차
Stubbing Service Discovery
Stub Runner Spring Cloud
의 가장 중요한 특징은 아래 두 가지를 위한 스텁stub을 생성한다는 점이다:
DiscoveryClient
ReactorServiceInstanceLoadBalancer
즉, Zookeeper, Consul, Eureka, 또는 다른 어떤 것을 사용하더라도 테스트 환경에선 필요하지 않다. Stub Runner Spring Cloud
는 추가한 의존성에 맞게 WireMock 인스턴스를 시작하고 있으며, Feign
을 사용할 때마다 애플리케이션이 실제 서비스 디스커버리 도구를 호출하는 대신 각 서비스에서 필요한 RestTemplate
이나 DiscoveryClient
를 직접 로드해 스텁stub 서버를 호출하도록 지시한다.
Test Profiles and Service Discovery
일반적으로 통합 테스트에선 디스커버리 서비스(e.g. Eureka)나 컨피그 서버를 호출하고 싶지는 않을 거다. 따라서 관련 기능을 비활성화할 수 있는 테스트 설정을 추가해야 한다.
관련해서는 spring-cloud-commons
에 제약이 있기 때문에, 다음 예제와 같이 스태틱 블록에서 관련 프로퍼티들을 비활성화해줘야 한다 (예제에선 Eureka를 비활성화한다):
//Hack to work around https://github.com/spring-cloud/spring-cloud-commons/issues/156
static {
System.setProperty("eureka.client.enabled", "false");
System.setProperty("spring.cloud.config.failFast", "false");
}
Additional Configuration
stubrunner.idsToServiceIds
맵을 사용하면 스텁stub의 artifactId
를 애플리케이션의 이름과 매칭시킬 수 있다.
기본적으로 모든 서비스 디스커버리는 스텁stub으로 처리된다. 다시 말해, 기존에
DiscoveryClient
가 있더라도 무시한다. 하지만 기존 것을 재사용하고 싶은 경우,stubrunner.cloud.delegate.enabled
를true
로 설정하면 기존DiscoveryClient
의 결과와 스텁stub 처리한 결과를 병합한다.
Stub Runner에서 쓰는 디폴트 Maven 설정은 아래 시스템 프로퍼티를 사용하거나, 관련 환경 변수를 통해 변경할 수 있다:
maven.repo.local
: 커스텀 메이븐 로컬 레포지토리 경로org.apache.maven.user-settings
: 커스텀 메이븐 user settings 경로org.apache.maven.global-settings
: 메이븐 global settings 경로
Next :
3.6.6. Using the Stub Runner Boot Application
Stub Runner Boot 활용하기
전체 목차는 여기에 있습니다.