Я использую 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 исходит от фиктивного сервера с использованием разных кодов возврата.
Может ли кто-нибудь помочь мне с этой проблемой?