我在 5.10.0 版本中使用 Mock-Server (mock-server.com) 在 JUnit 5 测试中模拟 REST-API。我正在使用 Java 8 开发一个 spring-boot 应用程序。我的有效负载格式是“protobuf”,所以我的 REST 接口返回一个ResponseEntity<MyProtoObject>
. 不幸的是,我在 Mock-Server 中找不到自定义对象作为主体返回的 Mock-Server 内置解决方案。我只找到了withBody(String)
or之类的方法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 调用结果来自使用不同返回码的模拟服务器。
有人可以帮我解决这个问题吗?