【发布时间】:2016-07-05 08:36:22
【问题描述】:
我正在尝试使用Moq framework 模拟httpContext,以在请求来自单元测试但无法真正使其正常工作时确保httContext.Current is not null。
在使用 google 之后,我按照以下步骤进行操作,因此在我向Api controller 发出电话后不确定下一步是什么。
第一步
Add Moq package to project
第二步
using Moq;
第三步
var context = new Mock<HttpContextBase>();
var request = new Mock<HttpRequestBase>();
var response = new Mock<HttpResponseBase>();
request.Setup(r => r.UrlReferrer).Returns(new Uri("http://tempuri.org/?ReturnUrl=%2f"));
response.Setup(r => r.Cookies).Returns(new HttpCookieCollection());
context.Setup(c => c.Request).Returns(request.Object);
context.Setup(c => c.Response).Returns(response.Object);
在发出 Post 控制器请求之前,有人可以帮我完成接下来需要做的步骤吗?
【问题讨论】:
-
您应该重构您的代码以将其与
HttpContext分离,使其更易于测试。不得不模拟你无法控制的事情通常会产生比它解决的问题更多的问题。尝试创建单元测试时遇到的困难程度直接表明您的代码构建得好坏。
标签: c# unit-testing asp.net-web-api2