使用上下文路径
Spring Cloud Contract 支持上下文路径。
|
要完全支持上下文路径,唯一需要更改的是生产方(producer side)的切换。此外,自动生成的测试必须使用显式模式。消费方(consumer side)保持不变。为了让生成的测试通过,您必须使用显式模式。以下示例展示了如何将测试模式设置为 Maven
Gradle
|
这样,您会生成一个不使用 MockMvc 的测试。这意味着您会生成真实的请求,并且需要设置生成的测试的基类以在真实的套接字上工作。
考虑以下契约
org.springframework.cloud.contract.spec.Contract.make {
request {
method 'GET'
url '/my-context-path/url'
}
response {
status OK()
}
}
以下示例展示了如何设置基类和 RestAssured
import io.restassured.RestAssured;
import org.junit.Before;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.boot.test.web.server.LocalServerPort;
@SpringBootTest(classes = ContextPathTestingBaseClass.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
class ContextPathTestingBaseClass {
@LocalServerPort int port;
@Before
public void setup() {
RestAssured.baseURI = "https://";
RestAssured.port = this.port;
}
}
如果您这样做
-
自动生成的测试中的所有请求都将发送到包含您的上下文路径的真实端点(例如,
/my-context-path/url)。 -
您的契约反映了您有一个上下文路径。您的生成的桩(stub)也包含该信息(例如,在桩中,您必须调用
/my-context-path/url)。