66 lines
2.8 KiB
Plaintext
66 lines
2.8 KiB
Plaintext
[[features-stub-runner-cloud]]
|
|
= Stub Runner Spring Cloud
|
|
|
|
include::partial$_attributes.adoc[]
|
|
|
|
Stub Runner can integrate with Spring Cloud.
|
|
|
|
For real life examples, see:
|
|
|
|
- https://github.com/spring-cloud-samples/spring-cloud-contract-samples/tree/{samples_branch}/producer[The producer application sample]
|
|
- https://github.com/spring-cloud-samples/spring-cloud-contract-samples/tree/{samples_branch}/consumer_with_discovery[The consumer application sample]
|
|
|
|
[[features-stub-runner-cloud-stubbing-discovery]]
|
|
== Stubbing Service Discovery
|
|
|
|
The most important feature of `Stub Runner Spring Cloud` is the fact that it stubs:
|
|
|
|
- `DiscoveryClient`
|
|
- `ReactorServiceInstanceLoadBalancer`
|
|
|
|
That means that, regardless of whether you use Zookeeper, Consul, Eureka, or anything
|
|
else, you do not need that in your tests. We are starting WireMock instances of your
|
|
dependencies and we are telling your application, whenever you use `Feign`, to load a
|
|
balanced `RestTemplate` or `DiscoveryClient` directly, to call those stubbed servers
|
|
instead of calling the real Service Discovery tool.
|
|
|
|
[[features-stub-runner-cloud-stubbing-profiles]]
|
|
=== Test Profiles and Service Discovery
|
|
|
|
In your integration tests, you typically do not want to call either a discovery service (such as Eureka)
|
|
or Config Server. That is why you create an additional test configuration in which you want to disable
|
|
these features.
|
|
|
|
Due to certain limitations of https://github.com/spring-cloud/spring-cloud-commons/issues/156[`spring-cloud-commons`],
|
|
to achieve this, you have to disable these properties
|
|
in a static block such as the following example (for Eureka):
|
|
|
|
====
|
|
[source,java]
|
|
----
|
|
//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");
|
|
}
|
|
----
|
|
====
|
|
|
|
[[features-stub-runner-additional-config]]
|
|
== Additional Configuration
|
|
|
|
You can match the `artifactId` of the stub with the name of your application by using the `stubrunner.idsToServiceIds:` map.
|
|
|
|
TIP: By default, all service discovery is stubbed. This means that, regardless of whether you have
|
|
an existing `DiscoveryClient`, its results are ignored. However, if you want to reuse it, you can set
|
|
`stubrunner.cloud.delegate.enabled` to `true`, and then your existing `DiscoveryClient` results are
|
|
merged with the stubbed ones.
|
|
|
|
The default Maven configuration used by Stub Runner can be tweaked either
|
|
by setting the following system properties or by setting the corresponding environment variables:
|
|
|
|
- `maven.repo.local`: Path to the custom maven local repository location
|
|
- `org.apache.maven.user-settings`: Path to custom maven user settings location
|
|
- `org.apache.maven.global-settings`: Path to maven global settings location
|
|
|