gpt4 book ai didi

java - 如何使用 Spring 在单元测试中模拟远程 REST API?

转载 作者:IT老高 更新时间:2023-10-28 21:06:21 27 4
gpt4 key购买 nike

假设我在我的应用程序中创建了一个简单的客户端,它使用一个远程 Web 服务,该服务在某个 URI /foo/bar/{baz} 处公开一个 RESTful API。现在我希望对调用此 Web 服务的客户端进行单元测试。

理想情况下,在我的测试中,我想模拟我从网络服务获得的响应,给定一个特定的请求,例如 /foo/bar/123/foo/bar/42。我的客户假设 API 实际上在某处运行,因此我需要一个本地“Web 服务”来开始在 http://localhost:9090/foo/bar 上运行以进行测试。

我希望我的单元测试是独立的,类似于使用 Spring MVC 测试框架测试 Spring Controller 。

一些简单客户端的伪代码,从远程 API 获取数字:

// Initialization logic involving setting up mocking of remote API at 
// http://localhost:9090/foo/bar

@Autowired
NumberClient numberClient // calls the API at http://localhost:9090/foo/bar

@Test
public void getNumber42() {
onRequest(mockAPI.get("/foo/bar/42")).thenRespond("{ \"number\" : 42 }");
assertEquals(42, numberClient.getNumber(42));
}

// ..

我有哪些使用 Spring 的替代方案?

最佳答案

如果你使用 Spring RestTemplate,你可以使用 MockRestServiceServer。一个例子可以在这里找到 REST Client Testing With MockRestServiceServer .

关于java - 如何使用 Spring 在单元测试中模拟远程 REST API?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25564533/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com