2

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

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

4

1 回答 1

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 依赖项使用相同的方法。

于 2012-11-14T15:38:47.343 回答