【发布时间】:2016-11-22 08:22:55
【问题描述】:
这是我用来模拟服务的实用程序类
public class MockService {
public static void bootUpMockServices() throws IOException {
String orderServiceSpecification = readFile("mappings/orderServicesSpecifications.json", Charset.defaultCharset());
String singleOrder = readFile("mappings/singleOrder.json", Charset.defaultCharset());
WireMock.stubFor(WireMock.get(WireMock.urlEqualTo("/orders"))
.willReturn(WireMock.aResponse()
.withStatus(200)
.withBody(orderServiceSpecification)));
WireMock.stubFor(WireMock.get(WireMock.urlEqualTo("/orders/1"))
.willReturn(WireMock.aResponse()
.withStatus(200)
.withBody(singleOrder)));
}
public static String readFile(String path, Charset encoding)
throws IOException {
byte[] encoded = Files.readAllBytes(Paths.get(path));
return new String(encoded, encoding);
}
}
如您所见,我正在模拟一个 GET 调用 /orders(包含所有订单)并使用正文响应并将所有订单保存在一个 json 文件中。
我还通过 GET 调用 /orders/1 调用单个订单。我正在使用文件中的 JSON 对象对其进行响应。但我希望它是动态的。就像我用orders/30 击中它时一样,我应该用id=30 动态获取订单并渲染它。
【问题讨论】:
-
你能添加你的 json 文件的内容吗?
-
@Areca。它们只是带有 JSON 数组的文件。我看不出与它们的内容相关。你为什么这么问?
-
如果你的 singleOrder.json 只有一项,你会如何让它动态化?
-
@Areca。在wiremock中存根有两种方式,Java方式(如上所示)和使用json文件(映射目录)。由于我使用的是 Java 方式,因此 json 文件中的内容并不重要,因为我只是将其转换为字符串并将其放入响应正文中。如果您知道如何在 json 文件中存根上述问题,请告诉我。:) 谢谢,如果我错了,请纠正我。 :)
-
@RaghunandanJ 下面汤姆的回答你觉得怎么样?
标签: java json rest api wiremock