如何使用 Rhino.Mocks 来模拟 ControllerContext

2023-11-29

我正在尝试使用Rhino.Mocks模拟一个ControllerContext对象来访问运行时对象,例如控制器单元测试中的用户、请求、响应和会话。我编写了以下方法来尝试模拟控制器。

private TestController CreateTestControllerAs(string userName)
{
    var mock = MockRepository.GenerateStub<ControllerContext>();
    mock.Stub(con =>
        con.HttpContext.User.Identity.Name).Return(userName);
    mock.Stub(con =>
        con.HttpContext.Request.IsAuthenticated).Return(true);

    var controller = CreateTestController(); // left out of example for brevity
    controller.ControllerContext = mock;

    return controller;
 }

但是,那HttpContext我模拟的 ControllerContext 为空,我尝试访问HttpContext.User等引起System.NullReferenceException.

我的嘲笑做错了什么?


我强烈推荐你看看MVCContrib.TestHelper它使用Rhino.Mocks并提供了一种优雅的方式来测试您的控制器。您的测试可能如下所示:

[TestClass]
public class UsersControllerTests : TestControllerBuilder
{
    [TestMethod]
    public void UsersController_Index()
    {
        // arrange
        // TODO : this initialization part should be externalized
        // so that it can be reused by other tests
        var sut = new HomeController();
        this.InitializeController(sut);
        // At this point sut.Request, sut.Response, sut.Session, ... are
        // stubed objects on which you could define expectations.

        // act
        var actual = sut.Index();

        // assert
        actual.AssertViewRendered();
    }
}

这是一个单元测试 for a 控制器这是一个示例 ASP.NET MVC 应用程序我写。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Rhino.Mocks 来模拟 ControllerContext 的相关文章

随机推荐

  • Erlang 及其堆内存消耗

    我一直在 HP Proliant 服务器上运行高度并发的应用程序 该应用程序是我用 erlang 编写的文件系统索引器 它为在文件系统上找到的每个文件夹生成一个进程 并将所有文件路径记录在碎片化的 Mnesia 数据库中 数据库由disc
  • CSS 填充剩余容器宽度

    我有这个标题栏 我需要名为 middle 的元素来填充 div 中剩余的空白 我该怎么做 header background red middle background orange display inline block right b
  • 通过 App Delegate 在视图之间共享数据

    我有一个关于在视图之间共享数据的问题 希望它不是太基础 我在 appDelegate 中有一个 NSMutableArray 其中包含 Object1 Object2 Object3 创建新对象 并将其添加到数组中 时 我需要在下一个视图上
  • 从 ruby​​ 内部加密数据包,无需依赖 Knife

    目前要加密数据包 我必须这样做 system knife data bag from file TemporaryEncrypting enc file path secret file Secret Key Path 这不起作用 因为 K
  • 是否可以使 Page.IsPostBack 独立于 ASP.net 为真?

    如果检查用户的角色以确定他们是否可以访问某个页面 则仅将此检查放在一个页面中是否安全 if Page IsPostBack 是否有可能client引起Page IsPostBack true独立于 ASP net 也就是说 客户端 POST
  • 从我的计算机python中提取子网掩码

    亲爱的 我打算提取我的子网掩码 我使用了下面的代码 但子网掩码始终是 255 255 255 255 这是错误的 import socket Import socket module import netifaces def get ip
  • ActionLink 或 BeginForm 提交中不弹出 AjaxOptions.confirm

    这是新手 所以如果我在另一个答案中错过了这一点 请耐心等待 我尝试在 Ajax BeginForm 中使用 AjaxOptions 但它没有弹出 所以我转而在 ActionLink 中测试它 但仍然无法让它工作 对于 ajax beginf
  • Java 字符串分割不起作用

    Java 专家 请查看下面的 split 命令代码 并让我知道为什么最后两个空值未被捕获 String test 1 O1 0 0000 0 0000 String splittest test split System out print
  • 带有 DataKinds 的类型级映射

    我有一个常见的模式 其中有一个类型级别的列表 我想应用一种类型构造函数 gt 到列表中的每个元素 例如 我想更改类型 Int Double Integer to Maybe Int Maybe Double Maybe Integer 这是
  • 如何在全日历中显示日期和工作日名称?

    我正在使用完整的日历 APIapi在我的网站上显示一个受 promo com 日历启发的日历 如下所示 这是我使用 React js 组件的解决方案 import React useState useEffect useContext us
  • React 上的连接被拒绝错误

    我正在尝试将我的 React 应用程序连接到 Rails api 但是 我似乎无法获取数据 错误信息是 GET http localhost 3000 net ERR CONNECTION REFUSED Fetch Error S Typ
  • jQuery - $(document).ready 和 $(window).load 之间有什么区别?

    之间有什么区别 document ready function my code here and window load function my code here 我想确保 document ready function and func
  • 不需要连接到金融机构的信用卡校验和和验证

    我所知道的验证是 整个卡号的校验和应为零 范围是0 9 根据卡类型检查第一位数字 根据卡类型检查长度 根据卡类型检查 CCV 长度 我认为所有主要类型都是 3 当然 请确保它是可接受的卡类型并且未过期 还有其他验证吗 我想很多人都不知道所有
  • 使用 Google Apps 脚本从 Google 表格导出 PDF 时的 setName

    我有这个脚本使用 Google Apps 脚本将三个单独的工作表导出为 PDF 该脚本工作正常 除了在每种情况下 PDF 均以文件名 export pdf 导出之外 我想将它们分别重命名为 昨天 过去 7 天 和 过去 30 天 有人可以帮
  • C#设置IE代理

    你好 我想使用 C 程序设置 IE 代理 因为 WebProxy 类有获取代理方法 但是没有方法可以设置它 以下是通过谷歌搜索找到的一些替代方案 1 全局代理选择 这是来自http www hccp org csharp http prox
  • Android 按名称以编程方式连接到 Open WiFi - 这是最佳解决方案?

    我一直在尝试使用两种方法通过名称以编程方式连接到开放的 wifi 连接门户 我使用了op1 但它只能工作大约80 的时间 op1 public static void connectToWifi Context context String
  • jQuery 文件上传插件要求我下载文件,出了什么问题?

    我在用着https github com blueimp jQuery File Upload我能够将文件上传并保存到指定文件夹 然后返回 Json 对象 然后浏览器 我使用IE8 弹出 文件下载 对话框 要求我下载一个名为 upload7
  • AlertDialog 支持 WebView 吗?

    我正在尝试实现一个带有 Webview 的 AlertDialog public OnClickListener imageButtonViewOnClickListener new OnClickListener public void
  • R - 如何将循环转换为 R 中的函数

    感谢您的阅读 我经常发现我需要将函数应用于数据切片 然后绑定输出 我通常会为此目的构建一个循环 但我确信我做错了 在 R 中我应该使用不同的思维方式 您能帮我学习更好的方法吗 带着感谢 adam rm m m 0 this variable
  • 如何使用 Rhino.Mocks 来模拟 ControllerContext

    我正在尝试使用Rhino Mocks模拟一个ControllerContext对象来访问运行时对象 例如控制器单元测试中的用户 请求 响应和会话 我编写了以下方法来尝试模拟控制器 private TestController CreateT