首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何使用Moq在ASP.NET MVC中模拟HttpContext?

如何使用Moq在ASP.NET MVC中模拟HttpContext?
EN

Stack Overflow用户
提问于 2009-09-21 00:24:36
回答 5查看 77K关注 0票数 110
代码语言:javascript
复制
[TestMethod]
public void Home_Message_Display_Unknown_User_when_coockie_does_not_exist()
{
    var context = new Mock<HttpContextBase>();
    var request = new Mock<HttpRequestBase>();
    context
        .Setup(c => c.Request)
        .Returns(request.Object);
    HomeController controller = new HomeController();

    controller.HttpContext = context; //Here I am getting an error (read only).
    ...
 }

我的基本控制器重写了初始化get的这个requestContext。我试着把这件事传下去,但我做得不对。

代码语言:javascript
复制
protected override void Initialize(System.Web.Routing.RequestContext requestContext)
{
    base.Initialize(requestContext);
}

我在哪里可以获得更多关于使用Moq模拟我的RequestContext和HttpContext的信息?我正在尝试模拟cookie和一般的上下文。

EN

回答 5

Stack Overflow用户

发布于 2009-09-21 01:05:07

HttpContext是只读的,但它实际上派生自您可以设置的ControllerContext。

代码语言:javascript
复制
 controller.ControllerContext = new ControllerContext( context.Object, new RouteData(), controller );
票数 64
EN

Stack Overflow用户

发布于 2009-09-21 14:30:50

创建一个请求和响应,并将它们都放入HttpContext:

代码语言:javascript
复制
HttpRequest httpRequest = new HttpRequest("", "http://mySomething/", "");
StringWriter stringWriter = new StringWriter();
HttpResponse httpResponse = new HttpResponse(stringWriter);
HttpContext httpContextMock = new HttpContext(httpRequest, httpResponse);
票数 43
EN

Stack Overflow用户

发布于 2015-06-30 20:02:55

感谢用户0100110010101。

它对我来说很有效,在这里我在为以下代码编写测试用例时遇到了问题:

代码语言:javascript
复制
 var currentUrl = Request.Url.AbsoluteUri;

下面是解决这个问题的代码行

代码语言:javascript
复制
HomeController controller = new HomeController();
//Mock Request.Url.AbsoluteUri 
HttpRequest httpRequest = new HttpRequest("", "http://mySomething", "");
StringWriter stringWriter = new StringWriter();
HttpResponse httpResponse = new HttpResponse(stringWriter);
HttpContext httpContextMock = new HttpContext(httpRequest, httpResponse);
controller.ControllerContext = new ControllerContext(new HttpContextWrapper(httpContextMock), new RouteData(), controller);

可能对其他人有帮助。

票数 16
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1452418

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档