亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何在 MockRestServiceServer 中通過字符串模式期待 requestTo?

如何在 MockRestServiceServer 中通過字符串模式期待 requestTo?

桃花長相依 2022-06-23 20:12:26
我有測試:org.springframework.test.web.client.MockRestServiceServer mockServer當我使用any(String.class)或確切的 URL 運行時,它們運行良好:mockServer.expect(requestTo(any(String.class))).andExpect(method(HttpMethod.GET)).andRespond(withSuccess("response", MediaType.APPLICATION_JSON));或者:mockServer.expect(requestTo("https://exact-example-url.com/path")).andExpect(method(HttpMethod.GET)).andRespond(withSuccess("response", MediaType.APPLICATION_JSON));我希望通過字符串模式請求來避免檢查確切的 URL。我可以編寫自定義匹配器,如Spring MockRestServiceServer 處理對同一 URI 的多個請求(自動發現)有沒有其他方法可以mockServer.expect(requestTo(".*example.*"))通過字符串模式制作?
查看完整描述

1 回答

?
侃侃無極

TA貢獻2051條經驗 獲得超10個贊

我想“任何”實際上是一個 Mockito.any() 方法?在這種情況下,您可以使用 Mockito.matches("regex")。請參閱文檔:https://static.javadoc.io/org.mockito/mockito-core/1.9.5/org/mockito/Matchers.html#matches(java.lang.String)


編輯:事實證明,MockRestServiceServer 使用 Hamcrest 匹配器來驗證期望(requestTo、withSuccess 等方法)。


org/hamcrest/Matchers類中還有一個方法matchesPattern(java.util.regex.Pattern pattern),自 Hamcrest 2 起可用,它可用于解決您的問題。


但是在您的項目中,您可能依賴于較舊版本的 Hamcrest (1.3),例如 junit 4.12、最新的 spring-boot-starter-test-2.13 或最后的 org.mock-server .mockserver-netty.3.10.8(傳遞)。


因此,您需要:


檢查項目中 Hamcrest 的實際版本并(如果不是 2+)手動更新此依賴項:https ://mvnrepository.com/artifact/org.hamcrest/hamcrest/2.1

<dependency>

    <groupId>org.hamcrest</groupId>

    <artifactId>hamcrest</artifactId>

    <version>2.1</version>

    <scope>test</scope>

</dependency>

更新您的測試:

mockServer.expect(requestTo(matchesPattern(".*exact-example-url.com.*")))

    .andExpect(method(HttpMethod.GET))

    .andRespond(withSuccess("response", MediaType.APPLICATION_JSON));


查看完整回答
反對 回復 2022-06-23
  • 1 回答
  • 0 關注
  • 169 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號