Mock-Server - Пользовательский объект как ответ REST - PullRequest
1 голос
/ 09 апреля 2020

Я использую Mock-Server (mock-server.com) в версии 5.10.0 для насмешки над REST-API в тесте JUnit 5. Я разрабатываю приложение для весенней загрузки с Java 8. Мой формат полезной нагрузки «protobuf», и поэтому мой интерфейс REST возвращает ResponseEntity<MyProtoObject>. К сожалению, я не могу найти встроенное решение в Mock-Server, чтобы пользовательские объекты возвращались Mock-Server как тело. Я нашел только такие методы, как withBody(String) или withBody(byte[]). В дополнение к этим методам я нашел метод withBody(BodyWithContentType). Я попытался создать следующую реализацию / использование абстрактного класса BodyWithContent<T> в моем модуле testclass:

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 в моей логике приложения c исходит от фиктивного сервера с использованием разных кодов возврата.

Может ли кто-нибудь помочь мне с этой проблемой?

1 Ответ

0 голосов
/ 10 апреля 2020

К сожалению, я получил ответ от разработчика mock-сервера через Slack, что невозможно вернуть пользовательские объекты. Для mock-сервера неясно, как они должны быть (де) сериализованы. Поэтому я попытаюсь использовать обходной путь через байт []

...