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。这意味着生成的是真实请求,而且你必须设置生成的测试的基本类以在真实套接字上运行。

考虑以下契约:

link:{verifier_root_path}/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy[role=include]

以下示例说明如何设置基本类和 RestAssured:

link:{verifier_root_path}/src/test/groovy/org/springframework/cloud/contract/verifier/builder/SingleTestGeneratorSpec.groovy[role=include]

如果你采用这种方式:

  • 自动生成的测试中的所有请求都与包含 yourcontext 路径的真实端点一起发送(例如,/my-context-path/url)。

  • 你的契约反映出你有一个上下文句柄。你生成的存根还有该信息(例如,在这些存根中,你必须调用 /my-context-path/url)。