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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何编写干净流畅的Web API测试

發布時間:2023/12/4 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何编写干净流畅的Web API测试 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

當我們為Web API編寫測試用例時,代碼基本是這樣的:

public?class?UnitTest1 {private?readonly?TestServer?_server;private?readonly?HttpClient?_client;public?UnitTest1(){//?Arrange_server?=?new?TestServer(new?WebHostBuilder().UseStartup<Startup>());_client?=?_server.CreateClient();}[Fact]public?async?Task?Test1(){//?Actvar?response?=?await?_client.GetAsync("/WeatherForecast");response.EnsureSuccessStatusCode();var?responseString?=?await?response.Content.ReadAsStringAsync();var?actual?=?Newtonsoft.Json.JsonConvert.DeserializeObject<IEnumerable<WeatherForecast>>(responseString);//?AssertAssert.Equal(5,?actual.Count());} }

我們需要獲得HttpResponseMessage response,檢查它的StatusCode,如果要對響應內容進行斷言,還需要對其反序列化。

這樣的問題是,測試用例中的大量代碼都是和測試本身無關的,而且用例一多,還會形成大量重復性的代碼。

這時,可以試試FluentAssertions.Web,它為HttpResponseMessage提供了大量擴展方法,用于單元測試中的斷言。

Demo

1.斷言

將上面的測試用例改用FluentAssertions.Web,代碼如下:

[Fact] public?async?Task?Test1() {//?Actvar?response?=?await?_client.GetAsync("/WeatherForecast");//?Assertresponse.Should().Be200Ok().And.Satisfy<IEnumerable<WeatherForecast>>(model?=>{model.Should().HaveCount(5);}); }

現在,斷言是不是看起來更自然流暢!

2.失敗原因

我們修改代碼,僅返回1條數據,使得測試失敗:

可以看到,失敗原因返回了詳細的診斷信息,我們無需再像以前那樣,還需要調試代碼,檢測錯誤原因了。

結論

使用FluentAssertions.Web,不僅可以編寫干凈流暢的Web API測試,還可以從斷言的失敗原因中提取足夠的信息,從而減少調試時間。

總結

以上是生活随笔為你收集整理的如何编写干净流畅的Web API测试的全部內容,希望文章能夠幫你解決所遇到的問題。

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