JUnit 5 テストで REST-API をモックするために、バージョン 5.10.0 で Mock-Server (mock-server.com) を使用しています。Java 8 を使用してスプリング ブート アプリケーションを開発しています。私のペイロード形式は「protobuf」であるため、REST インターフェイスはResponseEntity<MyProtoObject>
. 残念ながら、カスタム オブジェクトが Mock-Server によって body として返される組み込みのソリューションが Mock-Server に見つかりません。withBody(String)
またはのようなメソッドしか見つかりませんでしwithBody(byte[])
た。そのメソッドに加えて、メソッドを見つけましたwithBody(BodyWithContentType)
。BodyWithContent<T>
ユニットテストクラスで抽象クラスの次の実装/使用法を作成しようとしました:
private final class MyProtoObjectPayloadBody extends BodyWithContentType<MyProtoObject> {
public MyProtoObjectPayloadBody () {
super(null, null);
}
@Override
public MyProtoObject getValue() {
// return logic of MyProtoObject
}
}
// Called in @BeforeEach
private void prepareMock() {
this.mockServer.when(HttpRequest.request().withMethod("GET").withPath("/my-path"))
.respond(HttpResponse.response().withStatusCode(200).withBody(new MyProtoObjectPayloadBody ()).withDelay(TimeUnit.SECONDS, 5));
}
ResponseEntity が発生するコードをデバッグすると、モック サーバーから応答が返されますが、応答の「本文」は常に空です。私の習慣getValue()
も決して呼び出されません。アプリケーション ロジックの REST 呼び出しの結果が、さまざまなリターン コードを使用してモック サーバーから取得されるようにしました。
誰かがこの問題で私を助けることができますか?