我正在使用Nunit单元测试框架和Moq嘲笑我的MVC web应用程序中的对象我有“HttpContext.Current.ApplicationInstance.Response” 在我的行动时,测试包含此代码返回错误, 我已经嘲笑的HttpContext,但我没有约嘲讽applicationInstance.Response请帮我家伙嘲笑HttpContext.Current.ApplicationInstance.Response
想法public static Mock<HttpContextBase> HttpMock { get; set; }
public void HttpContextMocking(string requesturl)
{HttpMock = new Mock<HttpContextBase>();
var fakeIdentity = new GenericIdentity("[email protected]");
var principal = new GenericPrincipal(fakeIdentity, null);
HttpMock.Setup(x => x.User).Returns(principal);
HttpContext.Current = new HttpContext(new HttpRequest("", requesturl, ""), new HttpResponse(null));
HttpContext.Current.User = principal;
//Mocking the Httpcontext User Identity
HttpMock.SetupGet(c => c.User.Identity.Name).Returns("[email protected]");}
我得到错误NUnit的应用程序对象空引用execption,在该代码在我的源码抛出异常时调试抛单元测试
“响应在此上下文中不可用。” HttpContext.Current.ApplicationInstance.Response = 'HttpContext.Current.ApplicationInstance.Response' 投掷类型的异常 'System.Web.HttpException'
什么是错误你越来越? – VictorySaber 2015-03-19 16:11:23
HI @VictorySaber我已更新我的问题中的错误。 – 2015-03-20 05:54:26
你最好的选择是重构你的代码,这样上下文(或者甚至只是你需要的一小部分信息)是一个参数,然后从你没有进行单元测试的东西中传递它。 (您仍然可以进行集成测试。)这将允许您在单元测试期间传递存根。在最好的情况下,你的单元测试可以简化为一个简单的输入/输出测试。 – jpmc26 2015-03-20 05:55:50