热门从单元测试中向httpcontextbase添加Cookie并从控制器访问

时间:2016-03-11 17:12:53

标签: c# testing cookies

我正在尝试对我的一个控制器操作方法进行单元测试,但遇到HttpContext问题。

下面是Action方法代码,它从cookie中读取id。

offresFactory.getList().then(function(result) {
    $scope.offres = result.data;
    console.log($scope.offres);
}, 
function(msg) {
    alert(msg);
});

当我尝试单元测试控制器Action方法时,在下面的代码行中出现错误

 public decimal GetId()
    {
        string result = "0"; 
        try
        {
        HttpCookie authCookie = HttpContext.Request.Cookies["Id"];
     //Getting error in above line of code saying the Httpcontext is null
        FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value);
              result = ticket.UserData.Substring(0, ticket.UserData.IndexOf("|"));

        }
        catch (Exception ex)
        {
            LoggerHelper.LogError("GetID", ex.ToString());
        }

        return Convert.ToDecimal(result);
    }

即使我伪造了httpcontextbase并在我的单元测试代码中添加了cookie,HttpContext也变为null。

请帮忙。我花了一整天但仍然无法弄清楚为什么HttpContext变为空。

提前致谢, VJ

1 个答案:

答案 0 :(得分:0)

使用

解决了问题
System.Web.HttpContext.Current.Request.Cookies["Id"];

而不是使用

HttpContext.Request.Cookies["Id"];

在控制器中,因为我在单元测试用例中创建了System.Web.Httpcontext