我正在寻找在Asp.Net Web窗体中模拟HttpContext.Request.Cookies的最佳方法。
以下是我的代码:
public void Method1()
{
var _cookie = this.Context.Request.Cookies["PersonID"];
if (_cookie != null)
{
//some code.........
}
}
以下是我的测试方法代码的一部分:
using (var httpSimulator = new HttpSimulator("/", @"c:\inetpub\").SimulateRequest(new Uri(request), form))
{
//some code
var aObject= new ClassA(HttpContext.Current);
aObject.Method1();
}
我不确定我们是否可以为HttpRequest模拟cookie。 请帮忙。
非常感谢,
谢谢, 阚
答案 0 :(得分:0)
您最快的解决方案是使用包装类包装HttpContext。但是,如果方法通过其接口返回标量值或对象,则只能使用此方法。
因此,如果它返回一个非模拟对象,那就搞砸了。
根据我的经验,实现高可测试代码百分比的最佳方法是分层您的应用。在这种情况下,您可能想要使用HttpContext的所有用法。这意味着在UI层上使用HttpContext(代码隐藏或视图)。您将不得不牺牲这些上层的可测试性(可模拟性)。