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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

使用Moles框架实现HttpWebRequest与HttpWebResponse的单元测试

發(fā)布時(shí)間:2024/4/15 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用Moles框架实现HttpWebRequest与HttpWebResponse的单元测试 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

?????? 有時(shí)程序使用HttpWebRequest與HttpWebResponse實(shí)現(xiàn)HTTP的訪問,但我們想測(cè)試它們不太容易實(shí)現(xiàn)。現(xiàn)在我們可以使用Moles框架來實(shí)現(xiàn)對(duì)它的單元測(cè)試。如果您還不了解Moles,可以先到官方網(wǎng)站看這個(gè)文檔。下面我們來看片段代碼:

[TestMethod] [HostType("Moles")] [Description("Testing with moles assemblies")] public void Get_KnownUrl_ReturnsExpectedValue() {var mockedWebResponse = new MHttpWebResponse();MHttpWebRequest.AllInstances.GetResponse = (x) =>{return mockedWebResponse;};var googleUri = new Uri("http://www.google.com");mockedWebResponse.StatusCodeGet = () => { return HttpStatusCode.OK; };mockedWebResponse.ResponseUriGet = () => { return googleUri; };mockedWebResponse.ContentTypeGet = () => { return "testHttpResponse"; };string mockedResponseStr = @"<html> \r\n" +" <head></head> \r\n" +" <body> \r\n" +" <h1>Hello World</h1> \r\n" +" </body> \r\n" +"</html>";mockedWebResponse.ContentLengthGet = () => { return mockedResponseStr.Length; };using (var memoryStream = new MemoryStream()){using (var sw = new StreamWriter(memoryStream)){sw.Write(mockedResponseStr);sw.Flush();memoryStream.Seek(0, SeekOrigin.Begin);mockedWebResponse.GetResponseStream = () => memoryStream;//actvar request = WebRequest.Create("http://www.google.com");var response = (HttpWebResponse)request.GetResponse();// Assertstring htmlContent = null;using (var streamReader = new StreamReader(response.GetResponseStream())){htmlContent = streamReader.ReadToEnd();}Assert.AreEqual(HttpStatusCode.OK, response.StatusCode);Assert.AreEqual(mockedResponseStr.Length, response.ContentLength);Assert.AreEqual(mockedResponseStr, htmlContent);Assert.AreEqual(googleUri, response.ResponseUri);}} }


上面的基于MsTest的代碼引用Moles生成的System.Moles.dll,HttpWebRequest與HttpWebResponse是在System.dll里的所以生成它。一開始對(duì)一些屬性與方法的Mock操作,引用的是那些生成的MolesAssembiles,看字面意思可以了解代碼的意圖。接著模擬請(qǐng)求Google網(wǎng)站,返回我們遇先設(shè)置好返回的HtmlString,最后在驗(yàn)證中驗(yàn)證Stream,HttpStatusCode和Length是否一致。 當(dāng)然您也可以測(cè)試其它屬性成方法。注意最后請(qǐng)求的類是真實(shí)的類,可以演示我們把它們寫在一起了。實(shí)際中可能是某個(gè)真實(shí)環(huán)境的API之類的方法。

希望對(duì)您開發(fā)有幫助。

?

您可以感興趣的文章:

使用Moles對(duì)靜態(tài)方法做UnitTest


作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權(quán)歸作者和博客園共有,歡迎轉(zhuǎn)載,但未經(jīng)作者同意必須保留此段聲明,且在文章頁(yè)面明顯位置給出原文連接,否則保留追究法律責(zé)任的權(quán)利。
該文章也同時(shí)發(fā)布在我的獨(dú)立博客中-Petter Liu Blog。

轉(zhuǎn)載于:https://www.cnblogs.com/wintersun/archive/2012/01/07/2315588.html

總結(jié)

以上是生活随笔為你收集整理的使用Moles框架实现HttpWebRequest与HttpWebResponse的单元测试的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 重口味av| 免费啪啪小视频 | 日韩成人综合网 | 91蜜桃视频 | 男女www | 亚洲色图视频网站 | 99自拍偷拍视频 | 亚洲日日干 | 无码精品一区二区三区AV | 亚欧美在线观看 | 中日韩精品在线 | 开心激情播播网 | 无码人妻精品一区二区蜜桃视频 | 久久久久视 | 黄色在线播放视频 | 久久久无码人妻精品一区 | 色呦呦视频在线 | 日日噜噜噜噜人人爽亚洲精品 | 色综合狠狠爱 | 精品无码国产一区二区三区51安 | 亚洲一级成人 | 另类捆绑调教少妇 | 国产午夜精品一区二区三区视频 | 法国伦理少妇愉情 | 国产精品一级二级三级 | 视频国产一区 | 污污免费观看 | 91丨九色丨蝌蚪丨对白 | 性色av一区二区三区免费 | 色呦呦免费观看 | 亚洲男女在线观看 | 真人毛片视频 | 天天综合天天做天天综合 | 91精品国产综合久久久蜜臀 | 日剧大尺度床戏做爰 | 国产精品2| 日韩国产亚洲欧美 | 人人99| 亚洲精品三区 | 日本三级韩国三级三级a级中文 | 亚洲精品a区 | 国产精品久久久久国产a级 国产一区二区在线播放 | 91叼嘿视频 | 欧美日本韩国一区二区 | 狠狠干狠狠爱 | 国产精品女教师 | av中文字幕一区 | 免费毛片一级 | 涩涩涩涩av | 爱的色放3 | 午夜精品美女久久久久av福利 | 国产在线观看 | 国产不卡免费视频 | 国产精品呻吟久久 | 青草青青视频 | 午夜一级片 | 日韩精品视频播放 | 性激烈视频在线观看 | 国产成人福利在线 | 欧美手机在线观看 | 制服丝袜第二页 | 污到下面流水的视频 | 亚洲av男人的天堂在线观看 | 亚洲国产区 | 欧美色99| 国产一区二区三区电影在线观看 | 午夜免费福利小视频 | 国产精品久久久久久久久久久久久久久久久 | 久草手机在线观看 | 国产网红在线 | 国产精品久久久久久亚洲调教 | 日韩免费小视频 | xxxx视频在线观看 | 一区二区免费在线播放 | 国产精品美女在线观看 | 性欧美在线观看 | 国产福利av | 久久三级精品 | www.日韩在线观看 | 国产传媒在线播放 | 精品国产三级 | 999精品视频| 手机av不卡 | 日韩中文字幕观看 | 五月天黄色网址 | 久久国产柳州莫菁门 | 亚洲丝袜色图 | 一级做a爱视频 | 男人天堂中文字幕 | 亚洲蜜桃视频 | 亚洲精品1区 | 欧美精品久久久 | 亚洲综合图区 | 国产精品久久久久久吹潮 | 久久精品国产网红主播 | 亚洲国产私拍精品国模在线观看 | 中文亚洲av片在线观看 | 欧美天天 | 亚洲视频免费播放 |