Spring Cloud WireMock和Spring MVC模拟

2024-01-02 16:47 更新

Spring Cloud Contract提供了一个便利类,可以将JSON WireMock存根加载到Spring MockRestServiceServer中。以下代码显示了一个示例:

@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = WebEnvironment.NONE)
public class WiremockForDocsMockServerApplicationTests {

	@Autowired
	private RestTemplate restTemplate;

	@Autowired
	private Service service;

	@Test
	public void contextLoads() throws Exception {
		// will read stubs classpath
		MockRestServiceServer server = WireMockRestServiceServer.with(this.restTemplate)
				.baseUrl("https://example.org").stubs("classpath:/stubs/resource.json")
				.build();
		// We're asserting if WireMock responded properly
		assertThat(this.service.go()).isEqualTo("Hello World");
		server.verify();
	}

}

baseUrl值被附加到所有模拟调用中,并且stubs()方法采用存根路径资源模式作为参数。在前面的示例中,在/stubs/resource.json定义的存根被加载到模拟服务器中。如果要求RestTemplate访问https://example.org/,它将获得在该URL声明的响应。可以指定多个存根模式,每个存根模式都可以是目录(用于所有“ .json”的递归列表),固定文件名(如上例所示)或Ant样式的模式。JSON格式是标准的WireMock格式,您可以在WireMock网站上阅读该 格式

当前,Spring Cloud Contract验证程序支持Tomcat,Jetty和Undertow作为Spring Boot嵌入式服务器,而Wiremock本身对特定版本的Jetty(当前为9.2)具有“本机”支持。要使用本机Jetty,您需要添加本机Wiremock依赖项并排除Spring Boot容器(如果有)。

以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号