外部システムをモック化し、テストする方法を示します。
テストの実装方法は ExternalServiceMockSpec を参照してください。
外部システムのモックは Gateway や結合テストのシナリオなど複数のサブプロジェクトから参照できるよう、external-test-kit
プロジェクトに定義します。
モックとしての振る舞いを管理するモッククラスと、テストコードからモックを利用しやすくするモックサポートクラスを実装します。
- 実装サンプル
- モッククラス: IssuingServiceMock
- モックサポートクラス: IssuingServiceMockSupport
lerna.testkit.wiremock.ExternalServiceMock
を継承したモッククラスを定義します。
どの外部システム用のモックなのか識別しやすい名前を付けてください。
class MyMock extends ExternalServiceMock
テストコードからモックを参照しやすくし、テスト完了後にモックを停止させるためにモックサポートクラスを定義しておきます。
trait MyMockSupport extends BeforeAndAfterEach {
this: TestSuite with DISessionSupport =>
// このトレイトをミックスインしたテストコードから参照できるように定義
protected lazy val myMock: MyMock = diSession.build[MyMock]
override def afterEach(): Unit = {
// テスト完了後にモックを停止させる
myMock.server.resetAll()
super.afterEach()
}
}