亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > Java > 正文

詳解springboot WebTestClient的使用

2024-07-14 08:42:51
字體:
來源:轉載
供稿:網友

在使用springboot進行開發時,單元測試是必要的,當你建立一個spring項目時,它會為我們自己生成一個測試項目,當你的項目開始過程中,測試用例是同時要進行的,我們在進行WEB層的集成測試時,可以使用spring為我們提供的WebTestClient工具,非常方便,提供了基于restful的各種類型和狀態!

WebClient是一個響應式客戶端,它提供了RestTemplate的替代方法。它公開了一個功能齊全、流暢的API,并依賴于非阻塞I / O,使其能夠比RestTemplate更高效地支持高并發性。WebClient非常適合流式的傳輸方案,并且依賴于較低級別的HTTP客戶端庫來執行請求,是可插拔的。

如果在你系統的類路徑上有Spring WebFlux,就可以選擇使用WebClient來調用遠程REST服務。相比之下RestTemplate,這個客戶端具有更多的函數感并且完全Reactive響應式的。您可以在Spring Framework文檔WebClient的專用 部分中了解有關該內容的更多信息。

WebClient使用與WebFlux服務器應用程序相同的編解碼器,并與服務器功能Web框架共享公共基本包,一些通用API和基礎結構。API公開了Reactor Flux和Mono類型。默認情況下,它使用Reactor Netty作為HTTP客戶端庫,但其他人可以通過自定義ClientHttpConnector插入。

與RestTemplate相比,WebClient是:

  • 非阻塞,Reactive的,并支持更高的并發性和更少的硬件資源。
  • 提供利用Java 8 lambdas的函數API。
  • 支持同步和異步方案。
  • 支持從服務器向上或向下流式傳輸。

下面測試用例也是spring在github上開源的,大叔作為總結,把它收錄在博客里。

package com.example.webclientdemo;import com.example.webclientdemo.payload.GithubRepo;import com.example.webclientdemo.payload.RepoRequest;import org.assertj.core.api.Assertions;import org.junit.FixMethodOrder;import org.junit.Test;import org.junit.runner.RunWith;import org.junit.runners.MethodSorters;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.boot.test.context.SpringBootTest;import org.springframework.http.MediaType;import org.springframework.test.context.junit4.SpringRunner;import org.springframework.test.web.reactive.server.WebTestClient;import reactor.core.publisher.Mono;@RunWith(SpringRunner.class)@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)@FixMethodOrder(MethodSorters.NAME_ASCENDING)public class WebclientDemoApplicationTests {  @Autowired  private WebTestClient webTestClient;  @Test  public void test1CreateGithubRepository() {    RepoRequest repoRequest = new RepoRequest("test-webclient-repository", "Repository created for testing WebClient");    webTestClient.post().uri("/api/repos")        .contentType(MediaType.APPLICATION_JSON_UTF8)        .accept(MediaType.APPLICATION_JSON_UTF8)        .body(Mono.just(repoRequest), RepoRequest.class)        .exchange()        .expectStatus().isOk()        .expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8)        .expectBody()        .jsonPath("$.name").isNotEmpty()        .jsonPath("$.name").isEqualTo("test-webclient-repository");  }  @Test  public void test2GetAllGithubRepositories() {    webTestClient.get().uri("/api/repos")        .accept(MediaType.APPLICATION_JSON_UTF8)        .exchange()        .expectStatus().isOk()        .expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8)        .expectBodyList(GithubRepo.class);  }  @Test  public void test3GetSingleGithubRepository() {    webTestClient.get()        .uri("/api/repos/{repo}", "test-webclient-repository")        .exchange()        .expectStatus().isOk()        .expectBody()        .consumeWith(response ->            Assertions.assertThat(response.getResponseBody()).isNotNull());  }  @Test  public void test4EditGithubRepository() {    RepoRequest newRepoDetails = new RepoRequest("updated-webclient-repository", "Updated name and description");    webTestClient.patch()        .uri("/api/repos/{repo}", "test-webclient-repository")        .contentType(MediaType.APPLICATION_JSON_UTF8)        .accept(MediaType.APPLICATION_JSON_UTF8)        .body(Mono.just(newRepoDetails), RepoRequest.class)        .exchange()        .expectStatus().isOk()        .expectHeader().contentType(MediaType.APPLICATION_JSON_UTF8)        .expectBody()        .jsonPath("$.name").isEqualTo("updated-webclient-repository");  }  @Test  public void test5DeleteGithubRepository() {    webTestClient.delete()        .uri("/api/repos/{repo}", "updated-webclient-repository")        .exchange()        .expectStatus().isOk();  }}

本例主要用來測試響應式的mongodb控件,其中也有一些坑,我們在reactive-mongodb一節里再說!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VeVb武林網。


注:相關教程知識閱讀請移步到JAVA教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲自拍小视频免费观看| 亚洲精品有码在线| 日本精品久久电影| 国产极品jizzhd欧美| 亚洲天堂av在线免费| 精品亚洲一区二区三区| 精品视频在线播放| 日韩精品欧美国产精品忘忧草| 欧美亚洲激情在线| 国产精品专区h在线观看| 欧美情侣性视频| 久久久久成人网| 日韩国产欧美精品一区二区三区| 国产v综合v亚洲欧美久久| 亚洲精品美女在线| 国产91精品久久久久| 久久99视频免费| 欧美电影在线免费观看网站| 精品视频9999| 亚洲三级免费看| 亚洲男人天堂2024| 亚洲黄色av女优在线观看| 亚洲欧美在线一区| 欧美一区二区色| 欧美乱大交xxxxx| 亚洲欧洲日韩国产| 国产综合视频在线观看| 成人午夜小视频| 成人福利在线观看| 亚洲精品视频播放| 国产精品白嫩初高中害羞小美女| 国产成人精品免费视频| 亚洲成人a**站| 亚洲第一页中文字幕| 国产精品美乳在线观看| 国内精品视频在线| 国产精品盗摄久久久| 成人性生交大片免费看小说| 国产69精品99久久久久久宅男| 国产成人亚洲综合| 国产精品美女久久久免费| 久久免费成人精品视频| 欧美电影在线观看完整版| 中文字幕亚洲欧美日韩2019| 亚洲欧美日韩国产精品| 欧美亚洲国产视频小说| 国产亚洲精品成人av久久ww| 亚洲天天在线日亚洲洲精| 久久久亚洲影院你懂的| 国产精品男人的天堂| 国产精品第3页| 亚洲国产毛片完整版| 久久久久国产视频| 日韩av在线一区二区| 国产精品aaaa| 亚洲国产精品va在线看黑人| 日韩在线观看免费高清| 国产日韩欧美黄色| 555www成人网| 国产精品偷伦免费视频观看的| 亚洲性日韩精品一区二区| 日韩电影免费在线观看中文字幕| 在线中文字幕日韩| 国产美女被下药99| 亚洲成av人影院在线观看| 亚洲欧美成人网| 亚洲国产一区二区三区四区| 久久人人爽人人爽爽久久| 国产精品高清在线| 97成人精品视频在线观看| 欧美激情一区二区三区在线视频观看| 亚洲第一精品自拍| 92版电视剧仙鹤神针在线观看| 日韩中文在线中文网三级| 欧美激情在线观看视频| 日本一区二区在线播放| 亚洲欧美国产高清va在线播| 久久久国产精品亚洲一区| 国产精品影片在线观看| 亚洲最大福利网| 欧美日韩国产第一页| 欧美猛男性生活免费| 影音先锋欧美精品| 欧美一区二区大胆人体摄影专业网站| 色婷婷av一区二区三区在线观看| 久久久久久久久爱| 欧美精品久久久久| 亚洲精品电影久久久| 久久777国产线看观看精品| 亚洲美女性视频| 精品久久香蕉国产线看观看亚洲| 亚洲人成网站777色婷婷| 国产91在线播放精品91| 国产精品9999| 久久久久久av| 亚洲色图综合网| 国产精品久久久久影院日本| 91超碰caoporn97人人| 狠狠躁天天躁日日躁欧美| 热门国产精品亚洲第一区在线| 日韩欧美中文第一页| 俺去亚洲欧洲欧美日韩| 久久精品国亚洲| 97热精品视频官网| 国模精品视频一区二区| 91最新在线免费观看| 最新国产成人av网站网址麻豆| 国语自产精品视频在线看抢先版图片| 高清日韩电视剧大全免费播放在线观看| 97福利一区二区| 成人午夜在线视频一区| 国产精品黄视频| 国语自产在线不卡| 91精品啪aⅴ在线观看国产| 精品免费在线观看| 日本人成精品视频在线| 91社影院在线观看| 久久天天躁狠狠躁夜夜躁2014| 亚洲福利视频二区| 久久精品在线播放| 日韩欧美国产黄色| 日韩欧美国产免费播放| 91免费人成网站在线观看18| 69久久夜色精品国产7777| 热久久这里只有| 色偷偷av一区二区三区乱| 日本最新高清不卡中文字幕| 亚洲欧美成人精品| 91在线播放国产| 亚洲美女免费精品视频在线观看| 最新国产成人av网站网址麻豆| 久久精品国产亚洲精品| 亚洲视频777| 亚洲美女喷白浆| 91网站在线看| 亚洲国产精品网站| 欧美国产第二页| 国产精品影院在线观看| www.亚洲男人天堂| 欧美激情第99页| 亚洲天堂影视av| 亚洲国产精品嫩草影院久久| www.欧美免费| 亚洲最大成人网色| 8050国产精品久久久久久| 成人国产精品色哟哟| 欧美一区在线直播| 欧美大肥婆大肥bbbbb| 欧美日韩国产在线| 日韩在线观看成人| 岛国av一区二区在线在线观看| 中文国产亚洲喷潮| 欧美日韩国产精品一区| 热久久99这里有精品| 成人午夜在线影院| 国产精品狠色婷| 青青a在线精品免费观看| 91成人性视频| 国产亚洲精品美女久久久久| 国产日韩av在线播放| 日韩电影在线观看永久视频免费网站| 亚洲欧洲国产一区| 精品视频在线播放色网色视频| 米奇精品一区二区三区在线观看|