執行階段產生 Stub
作為消費者,您可能不想等待生產者完成實作,然後才發佈他們的 Stub。此問題的解決方案可以在執行階段產生 Stub。
作為生產者,當定義契約時,您需要讓產生的測試通過,以便發佈 Stub。在某些情況下,您希望解除封鎖消費者,以便他們可以在您的測試實際通過之前提取 Stub。在這種情況下,您應該將此類契約設定為進行中。您可以在進行中的契約章節中閱讀更多相關資訊。這樣一來,您的測試不會產生,但 Stub 會產生。
作為消費者,您可以切換開關以在執行階段產生 Stub。Stub Runner 會忽略所有現有的 Stub 對應,並為所有契約定義產生新的對應。另一個選項是傳遞 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);