使用上下文路徑

Spring Cloud Contract 支援上下文路徑。

要完全支援上下文路徑,唯一需要更改的是生產方(producer side)的切換。此外,自動生成的測試必須使用顯式模式。消費方(consumer side)保持不變。為了讓生成的測試透過,您必須使用顯式模式。以下示例展示瞭如何將測試模式設定為 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 的測試。這意味著您會生成真實的請求,並且需要設定生成的測試的基類以在真實的套接字上工作。

考慮以下契約

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)。

© . This site is unofficial and not affiliated with VMware.