我正在尝试对我的一个控制器操作方法进行单元测试,但遇到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
答案 0 :(得分:0)
使用
解决了问题System.Web.HttpContext.Current.Request.Cookies["Id"];
而不是使用
HttpContext.Request.Cookies["Id"];
在控制器中,因为我在单元测试用例中创建了System.Web.Httpcontext
。