如何对调用Response.AppendToLog的方法进行单元测试?

时间:2012-11-14 15:31:51

标签: c# unit-testing httpcontext

我正在写一个将数据写入HttpContext.Current.Response.AppendToLog的公共函数有没有办法为此编写单元测试?

我尝试创建HttpContext的模拟/自定义对象并分配给HttpContext.Current,但是如何断言AppendToLog写入的数据。

1 个答案:

答案 0 :(得分:3)

创建一个接口并使用实现包装HttpContext。

public interface IHttpContext
{
    void AppendToResponseLog(/*parmas go here*/);
}

public class HttpContextWrapper : IHttpContext
{
    private HttpContext _httpContext = HttpContext.Current; //or constructor param


    public void AppendToResponseLog(/*parmas go here*/)
    {
        _httpContext.Response.AppendToLog(/*params*/);
    }  
}

现在让您的课程依赖于IHttpContext而不是HttpContext.Current。就测试而言,您现在可以模拟IHttpContext

注意:对于您希望能够测试/模拟的所有.NET Framework依赖项,请使用相同的方法。