2 回答
TA贡献1825条经验 获得超6个赞
你可以看看WireMock
哪个是 HTTP API 的模拟器,所以它适合本地开发。使用它时,您将能够模拟微服务,就好像它作为独立的微服务在给定的主机和端口上运行一样。
您可以将它作为独立进程运行,也可以作为 spring 应用程序的一部分运行。
选项 1 - 配置独立的 wiremock 服务器:
下载Wiremock 独立 jar
使用端口在本地主机上运行独立服务器
1234
:
java -jar wiremock-standalone-2.24.0.jar --port 1234
配置 MS1 微服务以用作
localhost:1234
MS2 主机。用一些响应模拟你的 MS2(用 wiremock 模拟)端点:
curl -X POST --data '{ "request": { "url": "/yourendpoint", "method": "GET" }, "response": { "status": 200, "body": "Response" }}' http://localhost:1234/__admin/mappings/new
在这里我们做了一个模拟,当您使用 HTTP GET 访问模拟服务器时,/yourendpoint
您将收到文本Response
作为响应。
现在,当您使用 GET 时,
localhost:1234/yourendpoint
您会得到模拟的响应:
curl http://localhost:1234/yourendpointResponse
完整的例子可以在Wiremock Standalone docs
选项 2 - 在 Spring 应用程序中配置 WireMock 服务器:
添加
WireMock dependency
到您的项目(注意不仅要将其添加到测试范围)创建一个用于设置服务器的 Spring bean:
@Component
public class CustomMicroserviceMock {
private WireMockServer wireMockServer;
public CustomMicroserviceMock() {
wireMockServer = new WireMockServer(options().port(1234));
wireMockServer.stubFor(get(urlEqualTo("/yourendpoint"))
.willReturn(aResponse()
.withHeader("Content-Type", "text/plain")
.withBody("Response")));
wireMockServer.start();
}
@PreDestroy
void preDestroy() {
wireMockServer.stop();
}
}
当我们点击时,localhost:1234/yourendpoint我们得到回应:Response
这只是一个 POC,但它在两种情况下都有效。
TA贡献1793条经验 获得超6个赞
我建议在您的本地机器上使用 WireMock 作为独立服务,或者如果您熟悉 docker,您可以检查 wiremock docker 图像:
我将它用于我的开发和测试,它确实是一个强大的存根解决方案:)
祝你好运
添加回答
举报