【问题标题】:Newbie question on MvcContrib TestHelpers关于 MvcContrib TestHelpers 的新手问题
【发布时间】:2010-05-28 23:22:29
【问题描述】:

我刚刚开始在 MvcContrib 中使用 TestHelpers。我想尝试在我的控制器上测试一个操作方法,该方法本身测试 IsAjaxRequest() 是否为真。

我使用 TestHelper 示例中显示的相同代码来设置 TestControllerBuilder

_controller = new StarsController();    
_builder = new TestControllerBuilder();
_builder.InitializeController(_controller);

所以 _controller 里面有所有伪造/模拟的 HttpContext,这真的很棒。但是我现在该怎么做才能强制内部伪造的 Request 对象上的 IsAjaxRequest() 返回 true?

【问题讨论】:

    标签: asp.net asp.net-mvc mvccontrib-testhelper


    【解决方案1】:

    这是我使用的代码,页面顶部我的问题中的代码使用 MvcContrib testhelpers 创建了一个很好的伪造控制器 (_controller),该控制器在内部具有伪造的 HttpRequest、HttpResponse 等版本。然后按照 Patrick 的建议我创建包含 X-Requested-With 条目的新标头集合。然后告诉 _controller.HttpContext.Request.headers 在尝试查看标头时返回我的标头集合(即调用 IsAjaxRequest() 时发生的情况)。

        var headers = new NameValueCollection();
        headers.Add("X-Requested-With", "XMLHttpRequest");
    
        _controller.HttpContext.Request.Stub(r => r.Headers).Return(headers);
    

    像款待一样工作。

    【讨论】:

      【解决方案2】:

      您需要存根 HttpRequest.Headers 属性以返回包含“X-Requested-With”条目且值为“XMLHttpRequest”的 NameValueCollection。

      【讨论】:

      • 谢谢,这听起来不错,但我该怎么做。我真的一点也不了解Rhino Mocks。我已经使用了一点起订量,但我不知道从哪里开始删除 HttpRequest.Headers 属性。你能给我看一个小代码吗?帕特里克?
      • 没关系,我想通了。我添加了另一个答案,所以我可以粘贴我使用的代码,以防它帮助其他人。谢谢帕特里克,你确实让我走上了正轨。
      • var request = _builder.HttpContext.Request; request.Stub(r => r.Headers).Return(new NameValueCollection {{"X-Requested-With", "XMLHttpRequest"}});
      猜你喜欢
      • 1970-01-01
      • 2011-02-15
      • 2011-02-01
      • 2011-02-17
      • 1970-01-01
      • 1970-01-01
      • 2012-09-30
      • 2011-11-11
      • 1970-01-01
      相关资源
      最近更新 更多