在Asp.Net Web窗体中模拟HttpContext.Request.Cookies

时间:2014-02-07 20:50:46

标签: cookies mocking httprequest httpcontext

我正在寻找在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。 请帮忙。

非常感谢,

谢谢, 阚

1 个答案:

答案 0 :(得分:0)

您最快的解决方案是使用包装类包装HttpContext。但是,如果方法通过其接口返回标量值或对象,则只能使用此方法。

因此,如果它返回一个非模拟对象,那就搞砸了。

根据我的经验,实现高可测试代码百分比的最佳方法是分层您的应用。在这种情况下,您可能想要使用HttpContext的所有用法。这意味着在UI层上使用HttpContext(代码隐藏或视图)。您将不得不牺牲这些上层的可测试性(可模拟性)。