處理上下文路徑
Spring Cloud Contract 支援上下文路徑。
要完全支援上下文路徑,唯一需要的更改是在生產者側進行切換。此外,自動生成的測試必須使用顯式模式。消費者側保持不變。為了使生成的測試透過,您必須使用顯式模式。以下示例展示瞭如何將測試模式設定為 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
)。 -
您的契約反映了您具有上下文路徑。您生成的樁也包含該資訊(例如,在樁中,您必須呼叫
/my-context-path/url
)。