激情久久久_欧美视频区_成人av免费_不卡视频一二三区_欧美精品在欧美一区二区少妇_欧美一区二区三区的

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - ASP.NET教程 - asp.net core 使用 TestServer 來做集成測試的方法

asp.net core 使用 TestServer 來做集成測試的方法

2021-12-06 16:17Love it or leave it ASP.NET教程

這篇文章主要介紹了asp.net core 使用 TestServer 來做集成測試,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

intro

之前我的項目里的集成測試是隨機一個端口,每次都真實的啟動一個 webserver,之前也有看到過微軟文檔上 testserver 的介紹,當時沒仔細看過以為差不多就沒用,一直是啟動了一個真正的 webserver 去跑集成測試的,上次分享 xunit.dependencyinjection 改造測試項目的時候,寫的爛代碼被大師看到了之后, 大師建議用 testserver 來做集成測試,使用 testserver 不會真正的占用端口號,不會出現(xiàn)權限問題,于是扒了扒 testserver 的源碼,并用 testserver 改進了集成測試項目,感謝大師[獻花鮮花]~~

sample

之前的集成測試監(jiān)聽了一個端口號,使用了一個真實的 webserver,下面改成使用 testserver

testserver 現(xiàn)在是在 microsoft.aspnetcore.testhost 這個 nuget 包中,引用這個包就可以使用了

在服務注冊的時候調用 usetestserver 這一擴展方法就可以注入 testserver 了,集成測試一般會用 httpclient 來請求服務器端的 api 地址或頁面,testserver 提供了一個方便的 createclient 的方法可以很方便的創(chuàng)建一個用來請求 testserverhttpclient,微軟也提供了一些比較方便的擴展方法,可以使用 ihostgettestclient 擴展方法來獲取 httpclient

改成使用 testserver 很簡單,引用 nuget 包 microsoft.aspnetcore.testhost,變更對比如下:

asp.net core 使用 TestServer 來做集成測試的方法

源碼概覽

testserver 在啟動的時候并沒有監(jiān)聽端口,可以參考源碼 iserverstart

asp.net core 使用 TestServer 來做集成測試的方法

testserver 通過 createclient 方法來創(chuàng)建調用 testserver 接口的 httpclient

asp.net core 使用 TestServer 來做集成測試的方法

通過上面的代碼可以看的出來核心代碼是在 clienthandler 中定義的,源碼有點多,詳細可以直接看源碼 https://github.com/dotnet/aspnetcore/blob/v5.0.0/src/hosting/testhost/src/clienthandler.cs

asp.net core 使用 TestServer 來做集成測試的方法

clienthandler 重寫了 httpclienthandler 的 sendasync 方法,使得請求直接攔截掉,不會真正的發(fā)生 http 請求,實際的請求過程首先將 http 請求的信息轉換成 httprquestfeature 然后直接交給 testserver 處理,其實也就是直接交給 asp.net core 的請求管道去處理,請求處理結束之后,獲取 httpcontext 響應,獲取 httpresponsefeature 然后轉換成 httpclient 需要的 httpresponsemessage.

more

testserver 不僅僅可以支持 http 請求的處理,還支持 websocket 的處理,websocket 的集成測試也可以使用 testserver 來處理。

你如果還是比較懷疑是否真的沒有 http 請求,可以用 fildder 之類的 http 抓包工具監(jiān)控在跑測試的期間是否真的有 http 請求,如果是真正的 webserver 會有 http 請求,testserver 不會有 http 請求。

https://docs.microsoft.com/en-us/aspnet/core/test/integration-tests?view=aspnetcore-5.0
https://github.com/dotnet/aspnetcore/tree/v5.0.0/src/Hosting/TestHost/src
https://github.com/dotnet/aspnetcore/tree/v5.0.0/src/Hosting/TestHost/src/TestServer.cs
https://github.com/dotnet/aspnetcore/blob/v5.0.0/src/Hosting/TestHost/src/ClientHandler.cs#L58
https://github.com/OpenReservation/ReservationServer/blob/3.1.0/OpenReservation.API.Test/Startup.cs#L26
https://github.com/OpenReservation/ReservationServer/commit/e683065bf76e3c51688238c382b2c1f0c8028e7d

到此這篇關于asp.net core 使用 testserver 來做集成測試的文章就介紹到這了,更多相關asp.net core 集成測試內容請搜索服務器之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://www.cnblogs.com/weihanli/p/14007959.html

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 欧美性生交xxxxx免费观看 | 久在线观看福利视频69 | 亚洲最大的成人网 | 国产亚洲精品久久久久久久 | 国产成人综合在线观看 | xnxx 日本19| 日韩黄在线观看 | 激情宗合 | 国产午夜精品视频免费不卡69堂 | 成年人在线视频免费 | 史上最强炼体老祖动漫在线观看 | 91短视频网址 | 国产精品久久久久久久久久大牛 | 91精品国产一区二区三区动漫 | 久久91精品国产91久久yfo | 91成| 欧美日韩在线播放一区 | 免费永久在线观看黄网 | 免费一区区三区四区 | 日本高清电影在线播放 | 一级黄色影院 | 欧美黄成人免费网站大全 | 中文黄色一级片 | 国产精品亚洲yourport | 女人a级毛片 | 色av成人天堂桃色av | 国产一区精品在线观看 | 一级黄色在线观看 | 欧美一级做一级爱a做片性 91在线视频观看 | 欧美a级在线免费观看 | 欧美a在线看 | 久久综合一区 | 中文在线观看视频 | 久久精品观看 | 亚洲资源在线 | 亚洲电影在线观看高清免费 | 精品一区二区久久久久 | 日本在线观看高清完整版 | 欧美精品亚洲人成在线观看 | 久久久久久免费免费 | 麻豆一二区|