我需要为我的ASP.NET通用处理程序创建单元测试用例。我的处理程序代码如下:
public class MyHandler : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
context.Response.ContentType = "text/plain";
context.Response.Write("Hello World");
var data = context.Request.InputStream;
//Here logic read the context.Request.InputStream
//All the data will be posted to this Stream
//Calling of business logic layer Methods
}
public bool IsReusable
{
get
{
return false;
}
}
}
现在,我需要为此Handler创建Unit测试用例。我尝试过以下方法来进行单元测试用例。
HttpWebRequest
并将所有数据写入请求流。我不想继续这样做,因为我们有单独的工具使HttpWebRequest
测试所有处理程序我曾尝试模拟HttpContext,但它不允许模拟这个(是否可以模拟HttpContent?)。我试过了 this方式,但这需要修改我的处理程序,但我没有这样做的规定。
最后我的问题是,是否还有其他单元测试处理程序的方法?
先谢谢。
答案 0 :(得分:0)
模拟上下文可以做的是创建一个使用HttpContextBase的附加方法,只是转发来自接口方法的调用。可以使用HttpContextWrapper调用HttpContextBase,这样可以模拟上下文
public void ProcessRequest(HttpContext context)
{
ProcessRequestBase(new HttpContextWrapper(context));
}
public void ProcessRequestBase(HttpContextBase ctx)
{
}
可以通过点击ProcessRequestBase方法来测试。我们必须假设ProcessRequestBase按预期工作,但这很难避免。 然后你可以使用像这样的调用来测试它
HttpContextBase mock = new Mock<HttpContextBase>(); //or whatever syntax your mock framework uses
handler.ProcessRequest(mock.Object);