執行時生成存根
作為消費者,您可能不想等待生產者完成其實現然後釋出其存根。解決此問題的一個方法是在執行時生成存根。
作為生產者,當定義了契約時,您需要使生成的測試透過才能釋出存根。在某些情況下,您希望解除對消費者的阻塞,以便他們可以在您的測試實際透過之前獲取存根。在這種情況下,您應該將此類契約設定為進行中。您可以在進行中的契約部分閱讀更多相關資訊。這樣,您的測試將不會生成,但存根會生成。
作為消費者,您可以切換一個開關以在執行時生成存根。Stub Runner 會忽略所有現有的存根對映,併為所有契約定義生成新的對映。另一個選項是傳遞 spring.cloud.contract.stubrunner.generate-stubs 系統屬性。以下示例展示了這樣的設定
註解
@AutoConfigureStubRunner(
stubsMode = StubRunnerProperties.StubsMode.REMOTE,
repositoryRoot = "stubs://file://location/to/the/contracts",
ids = "com.example:some-producer",
generateStubs = true)
JUnit 4 規則
@Rule
public StubRunnerRule rule = new StubRunnerRule()
.downloadStub("com.example:some-producer")
.repoRoot("stubs://file://location/to/the/contracts")
.stubsMode(StubRunnerProperties.StubsMode.REMOTE)
.withGenerateStubs(true);
JUnit 5 擴充套件
@RegisterExtension
public StubRunnerExtension stubRunnerExtension = new StubRunnerExtension()
.downloadStub("com.example:some-producer")
.repoRoot("stubs://file://location/to/the/contracts")
.stubsMode(StubRunnerProperties.StubsMode.REMOTE)
.withGenerateStubs(true);