Working with Context Paths
Spring Cloud Contract 支持上下文路径。
唯一需要完全支持上下文路径的更改是生成者端的切换。此外,自动生成的测试必须使用明确模式。消费者端不受影响。为使生成的测试通过,你必须使用显式模式。以下示例说明如何将测试模式设置为 EXPLICIT
:
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>
Gradle
contracts {
testMode = 'EXPLICIT'
}
如此一来,你生成的测试就不会使用 MockMvc。这意味着生成的是真实请求,而且你必须设置生成的测试的基本类以在真实套接字上运行。
考虑以下契约:
Unresolved directive in context-paths.adoc - include::{verifier_root_path}/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy[]
以下示例说明如何设置基本类和 RestAssured:
Unresolved directive in context-paths.adoc - include::{verifier_root_path}/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy[]
如果你采用这种方式:
-
自动生成的测试中的所有请求都与包含 yourcontext 路径的真实端点一起发送(例如,
/my-context-path/url
)。 -
你的契约反映出你有一个上下文句柄。你生成的存根还有该信息(例如,在这些存根中,你必须调用
/my-context-path/url
)。