65 lines
2.0 KiB
Plaintext
65 lines
2.0 KiB
Plaintext
[[features-context-paths]]
|
|
= Working with Context Paths
|
|
|
|
include::partial$_attributes.adoc[]
|
|
|
|
Spring Cloud Contract supports context paths.
|
|
|
|
[IMPORTANT]
|
|
=====
|
|
The only change needed to fully support context paths is the switch on the
|
|
producer side. Also, the autogenerated tests must use explicit mode. The consumer
|
|
side remains untouched. In order for the generated test to pass, you must use explicit
|
|
mode. The following example shows how to set the test mode to `EXPLICIT`:
|
|
|
|
====
|
|
[source,xml,indent=0,subs="verbatim",role="primary"]
|
|
.Maven
|
|
----
|
|
<plugin>
|
|
<groupId>org.springframework.cloud</groupId>
|
|
<artifactId>spring-cloud-contract-maven-plugin</artifactId>
|
|
<version>${spring-cloud-contract.version}</version>
|
|
<extensions>true</extensions>
|
|
<configuration>
|
|
<testMode>EXPLICIT</testMode>
|
|
</configuration>
|
|
</plugin>
|
|
----
|
|
|
|
[source,groovy,indent=0,subs="verbatim",role="secondary"]
|
|
.Gradle
|
|
----
|
|
contracts {
|
|
testMode = 'EXPLICIT'
|
|
}
|
|
----
|
|
====
|
|
=====
|
|
|
|
That way, you generate a test that does not use MockMvc. It means that you generate
|
|
real requests and you need to set up your generated test's base class to work on a real
|
|
socket.
|
|
|
|
Consider the following contract:
|
|
|
|
[source,groovy,indent=0]
|
|
----
|
|
include::{verifier_root_path}/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy[tags=context_path_contract,indent=0]
|
|
----
|
|
|
|
The following example shows how to set up a base class and RestAssured:
|
|
|
|
[source,groovy,indent=0]
|
|
----
|
|
include::{verifier_root_path}/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy[tags=context_path_baseclass,indent=0]
|
|
----
|
|
|
|
If you do it this way:
|
|
|
|
* All of your requests in the autogenerated tests are sent to the real endpoint with your
|
|
context path included (for example, `/my-context-path/url`).
|
|
* Your contracts reflect that you have a context path. Your generated stubs also have
|
|
that information (for example, in the stubs, you have to call `/my-context-path/url`).
|
|
|