実行時のスタブの生成
コンシューマーとしては、プロデューサーが実装を完了してからスタブを公開するまで待ちたくないかもしれません。この問題の解決策は、実行時にスタブを生成することです。
プロデューサーは、契約を定義するときに、スタブを公開するために生成されたテストを合格させる必要があります。テストが実際に合格する前にコンシューマーがスタブを取得できるように、コンシューマーのブロックを解除したい場合があります。この場合、そのような契約を進行中として設定する必要があります。詳細については、"進行中の契約" セクションを参照してください。こうすることで、テストは生成されませんが、スタブが生成されます。
コンシューマーは、スイッチを切り替えて実行時にスタブを生成できます。スタブランナーは、既存のスタブマッピングをすべて無視し、すべての契約定義に対して新しいスタブマッピングを生成します。別のオプションは、stubrunner.generate-stubs
システムプロパティを渡すことです。次の例は、そのようなセットアップを示しています。
Annotation
@AutoConfigureStubRunner(
stubsMode = StubRunnerProperties.StubsMode.REMOTE,
repositoryRoot = "stubs://file://location/to/the/contracts",
ids = "com.example:some-producer",
generateStubs = true)
JUnit 4 Rule
@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 Extension
@RegisterExtension
public StubRunnerExtension stubRunnerExtension = new StubRunnerExtension()
.downloadStub("com.example:some-producer")
.repoRoot("stubs://file://location/to/the/contracts")
.stubsMode(StubRunnerProperties.StubsMode.REMOTE)
.withGenerateStubs(true);