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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

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

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

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

[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里的所以生成它。一開始對一些屬性與方法的Mock操作,引用的是那些生成的MolesAssembiles,看字面意思可以了解代碼的意圖。接著模擬請求Google網站,返回我們遇先設置好返回的HtmlString,最后在驗證中驗證Stream,HttpStatusCode和Length是否一致。 當然您也可以測試其它屬性成方法。注意最后請求的類是真實的類,可以演示我們把它們寫在一起了。實際中可能是某個真實環境的API之類的方法。

希望對您開發有幫助。

?

您可以感興趣的文章:

使用Moles對靜態方法做UnitTest


作者:Petter Liu
出處:http://www.cnblogs.com/wintersun/
本文版權歸作者和博客園共有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接,否則保留追究法律責任的權利。
該文章也同時發布在我的獨立博客中-Petter Liu Blog。

轉載于:https://www.cnblogs.com/wintersun/archive/2012/01/07/2315588.html

總結

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

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