我正在写一个将数据写入HttpContext.Current.Response.AppendToLog
的公共函数有没有办法为此编写单元测试?
我尝试创建HttpContext
的模拟/自定义对象并分配给HttpContext.Current
,但是如何断言AppendToLog写入的数据。
答案 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依赖项,请使用相同的方法。