1

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 呼び出しの結果が、さまざまなリターン コードを使用してモック サーバーから取得されるようにしました。

誰かがこの問題で私を助けることができますか?

4

2 に答える 2