在尝试为ASP.NET MVC框架编写的程序运行单元测试时,我得到一个NullReferenceException。
测试失败。 System.NullReferenceException:不是对象引用 设置为对象的实例。在 System.Web.HttpContextBaseExtensions.GetOwinContext(HttpContextBase 上下文中)
当我尝试执行Logoff
方法时会发生此错误。
public ActionResult LogOff()
{
SessionWrapper.SetInSession("_Settings", null);
AuthenticationManager.SignOut();
return RedirectToAction("Index", "Home");
}
public class HttpContextSessionWrapper : ISessionWrapper
{
public T GetFromSession<T>(string key)
{
if (!string.IsNullOrEmpty(key))
return (T)HttpContext.Current.Session[key];
else
return default(T);
}
public void SetInSession(string key, object value)
{
if (!string.IsNullOrEmpty(key))
HttpContext.Current.Session[key] = value;
}
}
在ASP.NET MVC中编写单元测试时如何修复此NullReferenceException?
答案 0 :(得分:1)
您不应该使用HttpContext.Context
。使用this.Session
,这是您的控制者。您可以使用IoC注入它或将其传递给您的方法。
使用IoC,您也可以更轻松地模拟这种依赖。