单元测试http处理程序?

Moc*_*ect 15 asp.net unit-testing httphandler

我目前基于Asp .net的项目大量使用Http处理程序来处理各种请求?那么,有什么办法可以使用单元测试用例来测试每个处理程序的功能吗?我们正在使用Nunit和Moq框架来促进单元测试.

Adr*_*n K 1

你当然可以,尽管我没有“愤怒”地这么做。
使用 System.Net.WebClient 对处理程序进行 HTTP 调用,并评估返回的内容,这将允许您测试处理程序的面向公众的接口。

在此示例中,我对目标进行了硬编码,并在 WebClient 上使用将返回字符串的方法。

WebClient 还允许您访问 ResponseHeaders、编码和其他有用的“webby”内容;您也可以上传信息。

using System.Net;

namespace UnitTestHttpHandler
{
    public class TestHarness
    {
        public static string GetString()
        {
            WebClient myWebClient = new WebClient();
            return myWebClient.DownloadString("http://localhost/Morphfolia.Web/ContentList.ashx");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后,您可以使用 TestHarness 调用目标 HttpHandler 并验证测试中的结果(或者如果您知道的话,可以使用更好的测试方法 - 我不是单元测试专家)。

    [TestMethod]
    public void TestMethod1()
    {
        string x = UnitTestHttpHandler.TestHarness.GetString();

        Assert.IsTrue(x.Length > 5);
    }
Run Code Online (Sandbox Code Playgroud)