Spring Cloud WireMock和Spring MVC模擬

2024-01-02 16:47 更新

Spring Cloud Contract提供了一個(gè)便利類(lèi),可以將JSON WireMock存根加載到Spring MockRestServiceServer中。以下代碼顯示了一個(gè)示例:

@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值被附加到所有模擬調(diào)用中,并且stubs()方法采用存根路徑資源模式作為參數(shù)。在前面的示例中,在/stubs/resource.json定義的存根被加載到模擬服務(wù)器中。如果要求RestTemplate訪問(wèn)https://example.org/,它將獲得在該URL聲明的響應(yīng)。可以指定多個(gè)存根模式,每個(gè)存根模式都可以是目錄(用于所有“ .json”的遞歸列表),固定文件名(如上例所示)或Ant樣式的模式。JSON格式是標(biāo)準(zhǔn)的WireMock格式,您可以在WireMock網(wǎng)站上閱讀該 格式。

當(dāng)前,Spring Cloud Contract驗(yàn)證程序支持Tomcat,Jetty和Undertow作為Spring Boot嵌入式服務(wù)器,而Wiremock本身對(duì)特定版本的Jetty(當(dāng)前為9.2)具有“本機(jī)”支持。要使用本機(jī)Jetty,您需要添加本機(jī)Wiremock依賴(lài)項(xiàng)并排除Spring Boot容器(如果有)。

以上內(nèi)容是否對(duì)您有幫助:
在線(xiàn)筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)