最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

asp.net core 使用 TestServer 來(lái)做集成測(cè)試的方法

 更新時(shí)間:2020年11月20日 09:27:16   作者:Love it or leave it  
這篇文章主要介紹了asp.net core 使用 TestServer 來(lái)做集成測(cè)試,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

Intro

之前我的項(xiàng)目里的集成測(cè)試是隨機(jī)一個(gè)端口,每次都真實(shí)的啟動(dòng)一個(gè) WebServer,之前也有看到過(guò)微軟文檔上 TestServer 的介紹,當(dāng)時(shí)沒(méi)仔細(xì)看過(guò)以為差不多就沒(méi)用,一直是啟動(dòng)了一個(gè)真正的 WebServer 去跑集成測(cè)試的,上次分享 Xunit.DependencyInjection 改造測(cè)試項(xiàng)目的時(shí)候,寫的爛代碼被大師看到了之后, 大師建議用 TestServer 來(lái)做集成測(cè)試,使用 TestServer 不會(huì)真正的占用端口號(hào),不會(huì)出現(xiàn)權(quán)限問(wèn)題,于是扒了扒 TestServer 的源碼,并用 TestServer 改進(jìn)了集成測(cè)試項(xiàng)目,感謝大師[獻(xiàn)花鮮花]~~

Sample

之前的集成測(cè)試監(jiān)聽(tīng)了一個(gè)端口號(hào),使用了一個(gè)真實(shí)的 WebServer,下面改成使用 TestServer

TestServer 現(xiàn)在是在 Microsoft.AspNetCore.TestHost 這個(gè) Nuget 包中,引用這個(gè)包就可以使用了

在服務(wù)注冊(cè)的時(shí)候調(diào)用 UseTestServer 這一擴(kuò)展方法就可以注入 TestServer 了,集成測(cè)試一般會(huì)用 HttpClient 來(lái)請(qǐng)求服務(wù)器端的 API 地址或頁(yè)面,TestServer 提供了一個(gè)方便的 CreateClient 的方法可以很方便的創(chuàng)建一個(gè)用來(lái)請(qǐng)求 TestServerHttpClient,微軟也提供了一些比較方便的擴(kuò)展方法,可以使用 IHostGetTestClient 擴(kuò)展方法來(lái)獲取 HttpClient

改成使用 TestServer 很簡(jiǎn)單,引用 nuget 包 Microsoft.AspNetCore.TestHost,變更對(duì)比如下:

源碼概覽

TestServer 在啟動(dòng)的時(shí)候并沒(méi)有監(jiān)聽(tīng)端口,可以參考源碼 IServerStart

TestServer 通過(guò) CreateClient 方法來(lái)創(chuàng)建調(diào)用 TestServer 接口的 HttpClient

通過(guò)上面的代碼可以看的出來(lái)核心代碼是在 ClientHandler 中定義的,源碼有點(diǎn)多,詳細(xì)可以直接看源碼 https://github.com/dotnet/aspnetcore/blob/v5.0.0/src/Hosting/TestHost/src/ClientHandler.cs

ClientHandler 重寫了 HttpClientHandler 的 SendAsync 方法,使得請(qǐng)求直接攔截掉,不會(huì)真正的發(fā)生 Http 請(qǐng)求,實(shí)際的請(qǐng)求過(guò)程首先將 Http 請(qǐng)求的信息轉(zhuǎn)換成 HttpRquestFeature 然后直接交給 TestServer 處理,其實(shí)也就是直接交給 asp.net core 的請(qǐng)求管道去處理,請(qǐng)求處理結(jié)束之后,獲取 HttpContext 響應(yīng),獲取 HttpResponseFeature 然后轉(zhuǎn)換成 HttpClient 需要的 HttpResponseMessage.

More

TestServer 不僅僅可以支持 HTTP 請(qǐng)求的處理,還支持 WebSocket 的處理,WebSocket 的集成測(cè)試也可以使用 TestServer 來(lái)處理。

你如果還是比較懷疑是否真的沒(méi)有 HTTP 請(qǐng)求,可以用 Fildder 之類的 HTTP 抓包工具監(jiān)控在跑測(cè)試的期間是否真的有 HTTP 請(qǐng)求,如果是真正的 WebServer 會(huì)有 HTTP 請(qǐng)求,TestServer 不會(huì)有 HTTP 請(qǐng)求。

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

到此這篇關(guān)于asp.net core 使用 TestServer 來(lái)做集成測(cè)試的文章就介紹到這了,更多相關(guān)asp.net core 集成測(cè)試內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • .NET C#使用微信公眾號(hào)登錄網(wǎng)站

    .NET C#使用微信公眾號(hào)登錄網(wǎng)站

    這篇文章主要介紹了.NET C#使用微信公眾號(hào)登錄網(wǎng)站,教大家利用微信公眾號(hào)進(jìn)行網(wǎng)站登錄,感興趣的小伙伴們可以參考一下
    2016-08-08
  • 如何在ASP.NET Core中給上傳圖片功能添加水印實(shí)例代碼

    如何在ASP.NET Core中給上傳圖片功能添加水印實(shí)例代碼

    這篇文章主要給大家介紹了關(guān)于如何在ASP.NET Core中給上傳圖片功能添加水印的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-02-02
  • 擴(kuò)展 Entity Framework支持復(fù)雜的過(guò)濾條件(多個(gè)關(guān)鍵字模糊匹配)

    擴(kuò)展 Entity Framework支持復(fù)雜的過(guò)濾條件(多個(gè)關(guān)鍵字模糊匹配)

    之前遇到一個(gè)棘手的Linq to EF查詢的技術(shù)問(wèn)題,現(xiàn)有產(chǎn)品表Product,需要根據(jù)多個(gè)關(guān)鍵字模糊匹配產(chǎn)品名稱, 現(xiàn)將解決方案分享出來(lái),按興趣的朋友可以參考下
    2012-12-12
  • VS2017調(diào)用MySQL 8.0的方法

    VS2017調(diào)用MySQL 8.0的方法

    這篇文章主要為大家詳細(xì)介紹了VS2017調(diào)用MySQL 8.0的方法,附上C++程序,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-06-06
  • 淺析Repeater控件的使用 (原樣導(dǎo)出和動(dòng)態(tài)顯示/隱藏Repeater中的列)

    淺析Repeater控件的使用 (原樣導(dǎo)出和動(dòng)態(tài)顯示/隱藏Repeater中的列)

    本文主要介紹了淺析Repeater控件的使用 (原樣導(dǎo)出和動(dòng)態(tài)顯示/隱藏Repeater中的列)的具體方法,需要的朋友可以看下
    2016-12-12
  • Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的全過(guò)程

    Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的全過(guò)程

    這篇文章主要給大家介紹了關(guān)于在Linux服務(wù)器下利用Docker部署.net Core項(xiàng)目的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用.net Core具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • 利用asp.net實(shí)現(xiàn)生成不重復(fù)訂單號(hào)

    利用asp.net實(shí)現(xiàn)生成不重復(fù)訂單號(hào)

    訂單號(hào)在購(gòu)物過(guò)程中起到了很好的識(shí)別作用,更方便的有利于工作人員識(shí)別商品,本文介紹利用asp.net實(shí)現(xiàn)生成訂單號(hào)
    2012-12-12
  • .NET實(shí)現(xiàn)倉(cāng)儲(chǔ)Repository(AI)的操作方法

    .NET實(shí)現(xiàn)倉(cāng)儲(chǔ)Repository(AI)的操作方法

    倉(cāng)儲(chǔ)模式是一種在應(yīng)用程序中使用的設(shè)計(jì)模式,它將數(shù)據(jù)訪問(wèn)邏輯與業(yè)務(wù)邏輯分離,通過(guò)倉(cāng)儲(chǔ)接口和倉(cāng)儲(chǔ)實(shí)現(xiàn)類,您可以定義和實(shí)現(xiàn)數(shù)據(jù)的增刪改查操作,這篇文章主要介紹了.NET?實(shí)現(xiàn)倉(cāng)儲(chǔ)Repository(AI),需要的朋友可以參考下
    2023-09-09
  • asp.net中EXCEL數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)的方法

    asp.net中EXCEL數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)的方法

    這篇文章主要介紹了asp.net中EXCEL數(shù)據(jù)導(dǎo)入到數(shù)據(jù)庫(kù)的方法,實(shí)現(xiàn)讀取excel數(shù)據(jù)并導(dǎo)入到SQL Server數(shù)據(jù)庫(kù)的功能,是非常實(shí)用的技巧,需要的朋友可以參考下
    2015-01-01
  • MVC 5 第一章 創(chuàng)建MVC 5 web應(yīng)用程序

    MVC 5 第一章 創(chuàng)建MVC 5 web應(yīng)用程序

    本章將講述一些構(gòu)建ASP.NET MVC 5 web application的一些基礎(chǔ)知識(shí), 通過(guò)本章學(xué)習(xí),你應(yīng)該能夠掌握到構(gòu)建MVC 5應(yīng)用程序的基本步驟,并且通過(guò)展示一個(gè)完整的MVC 5 hello world應(yīng)用程序了解MVC 5應(yīng)用程序所帶來(lái)的用戶體驗(yàn)。
    2014-06-06

最新評(píng)論

运城市| 阿尔山市| 永仁县| 三门县| 黄石市| 襄汾县| 武功县| 岳阳县| 县级市| 平泉县| 城口县| 鄯善县| 台南县| 黔西县| 凌海市| 东港市| 成都市| 莱芜市| 长阳| 贺州市| 饶平县| 山阳县| 拉萨市| 唐海县| 广西| 疏附县| 天津市| 哈尔滨市| 巴楚县| 太仓市| 方山县| 崇义县| 华池县| 隆尧县| 定襄县| 吉水县| 徐水县| 宜阳县| 融水| 永登县| 开鲁县|