2014-02-07 69 views
0

我正在尋找在Asp.Net Web窗體中模擬HttpContext.Request.Cookies的最佳方法。在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的。 請幫忙。

很多感謝,

感謝, 侃

回答

0

你最快的解決辦法是換用HttpContext的包裝類。但是如果方法通過接口返回一個標量值或一個對象,你只能逃避這一點。

所以,如果它返回一個非模擬對象,你的擰。

根據我的經驗,實現高比例可測試代碼的最佳方法是爲應用程序分層。在這種情況下,你會想要放下HttpContext的所有用法。這意味着在UI層上使用HttpContext(代碼隱藏或查看)。你將不得不犧牲這些高層的可測試性(可模仿性)。