日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > java >内容正文

java

将Wiremock集成到Spring Boot Java Web应用程序中以模拟外部依赖关系

發布時間:2023/12/3 java 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 将Wiremock集成到Spring Boot Java Web应用程序中以模拟外部依赖关系 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

介紹

WireMock是用于基于HTTP的API的模擬服務器。 有些人可能會將其視為服務虛擬化工具或模擬服務器。 它使您能夠存根所需的API或其他外部依賴項,以加快本地開發速度。 它支持測試真實API無法可靠產生的極端情況和失敗模式。 在模擬單元測試和集成測試中的外部依賴關系時,它也很有用。 它與jUnit具有出色的集成。

添加Wiremock依賴性

首先,您將要添加Wiremock依賴項。 您可以下載常規依賴項或包含所有依賴項的胖JAR獨立版本。 我們將在此處使用標準依賴項。 將以下依賴項添加到您的build.gradle中

build.gradle

dependencies {testCompile('com.github.tomakehurst:wiremock:2.1.12') }

添加Wiremock單元測試

這是完整的單元測試,可用于測試與Wiremock的集成。 該單元測試使用jUnit4規則啟動端口8089上的Wiremock服務器,并在每次測試后將其關閉。 我們使用stubFor方法來定義模擬的終點和響應。 我們使用Spring RestTemplate創建一個到模擬服務器的HTTP請求并捕獲結果。

WiremockTests.java

public class WiremockTests {RestTemplate restTemplate;ResponseEntity response;@Rulepublic WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(8089).httpsPort(8443));@Beforepublic void setup() throws Exception {restTemplate = new RestTemplate();response = null;}@Testpublic void givenWireMockAdminEndpoint_whenGetWithoutParams_thenVerifyRequest() {RestTemplate restTemplate = new RestTemplate();response = restTemplate.getForEntity("http://localhost:8089/__admin", String.class);assertThat("Verify Response Body", response.getBody().contains("mappings"));assertThat("Verify Status Code", response.getStatusCode().equals(HttpStatus.OK));}@Testpublic void givenWireMockEndpoint_whenGetWithoutParams_thenVerifyRequest() {stubFor(get(urlEqualTo("/api/resource/")).willReturn(aResponse().withStatus(HttpStatus.OK.value()).withHeader("Content-Type", TEXT_PLAIN_VALUE).withBody("test")));response = restTemplate.getForEntity("http://localhost:8089/api/resource/", String.class);assertThat("Verify Response Body", response.getBody().contains("test"));assertThat("Verify Status Code", response.getStatusCode().equals(HttpStatus.OK));verify(getRequestedFor(urlMatching("/api/resource/.*")));} }

您可以運行此測試,如果完成,則您已成功將Wiremock集成到應用程序中。

深入到單元測試

這是一些靜態導入,您可以在測試中使用這些靜態導入來提高可讀性和簡潔性。

WiremockTests.java

import static com.github.tomakehurst.wiremock.client.WireMock.*; import static com.github.tomakehurst.wiremock.core.WireMockConfiguration.wireMockConfig; import static org.hamcrest.MatcherAssert.assertThat; import static org.springframework.http.MediaType.TEXT_PLAIN_VALUE;

jUnit4規則

這個jUnit4 @rule將自動管理Wiremock服務器的生命周期以及每個測試用例的啟動和關閉Wiremock。 您也可以使用setup()和teardown()方法來實現,但是jUnit4規則更加簡潔明了。

WiremockTests.java

@Rulepublic WireMockRule wireMockRule = new WireMockRule(wireMockConfig().port(8089).httpsPort(8443));

殘端和響應

此代碼使用stubFor()方法(已靜態導入)定義端點, / api / resource /和純文本響應主體“ test”。您也可以使用此方法通過更改Content-返回JSON或XML響應。類型和響應主體

WiremockTests.java

stubFor(get(urlEqualTo("/api/resource/")).willReturn(aResponse().withStatus(HttpStatus.OK.value()).withHeader("Content-Type", TEXT_PLAIN_VALUE).withBody("test")));

春天RestTemplate

我們使用Spring RestTemplate類對http:// localhost:8089 / api / resource /執行GET HTTP請求,以打到Wiremock服務器的存根端點。 在這種情況下,我們期望一個String.class實體響應,因為那是我們在stubFor()方法中定義的。 如果您配置了POJO對象,則需要定義一個POJO對象以從存根方法捕獲JSON響應。 我們在ResponseEntity對象中捕獲響應,該對象捕獲響應主體,標頭和狀態代碼以及有關請求的其他信息。

WiremockTests.java

response = restTemplate.getForEntity("http://localhost:8089/api/resource/", String.class);

手動啟動和停止Wiremock服務器

您可以手動啟動和停止Wiremock服務器,而無需使用jUnit4規則來管理生命周期。 當您的應用程序啟動時,您可能希望這樣做是一種引導方法。

ServiceClass.java

WireMockServer wireMockServer = new WireMockServer(wireMockConfig().port(8089)); //No-args constructor will start on port 8080, no HTTPS wireMockServer.start();WireMock.reset();wireMockServer.stop();

結論

現在,您的項目中已安裝Wiremock。 您可以在單元測試和集成測試中使用Wiremock來對外部依賴關系進行存根,也可以加快本地環境中的開發。 您可以在此處閱讀有關設置Wiremock的更多信息: http ://wiremock.org/docs/getting-started/

翻譯自: https://www.javacodegeeks.com/2016/09/integrate-wiremock-spring-boot-java-web-application-mocking-external-dependencies.html

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的将Wiremock集成到Spring Boot Java Web应用程序中以模拟外部依赖关系的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。