使用 rhino 模拟进行 lambda 单元测试失败

2024-06-26

如果我有这个测试

Expect.Call(_session.Single<Admin>(x => x.Email == userModel.Email)).Repeat.Once().Return(null);

告诉我

Rhino.Mocks.Exceptions.ExpectationViolationException : ISession.Single(x => (x.Email == value(Enquete.Test.Controllers.MemberControllerTest+c__DisplayClassb).userModel.Email)); 预期#1,实际#0。

它失败了,但如果我添加 .IgnoreArguments() ,它就可以工作。是否可以使用 lambda 进行测试?如果我调试,我可以看到我的电子邮件是相同的。

这是完整的测试:

[Test]
        public void Register_Post_ReturnRedirectOnSuccess()
        {
            _builder.InitializeController(_controller);

            var userModel = TestHelper.CreateMemberModel();
            var returnMemberRole = "Member";
            var tempPassword = "Val1dPass";
            var member = TestHelper.CreateMember(userModel);
            var emailSubscription = "[email protected] /cdn-cgi/l/email-protection";
            var subjectNotification = "sujet du meessaaggee";
            var mailUseSSL = "true";
            var message = userModel.FirstName + " " + userModel.LastName + " s'est inscrit au système d'enquête en ligne, veuillez confirmer son inscription.";
            member.PasswordExpire = DateTime.Now.AddDays(-1);
            member.Phone = userModel.Phone;
            member.MemberNumber = userModel.MemberNumber;
            member.PasswordExpire = DateTime.Now.AddDays(-1);

            Expect.Call(_session.Single<Admin>(x => x.Email == userModel.Email)).Repeat.Once().Return(null);
            Expect.Call(_session.Single<Member>(x => x.Email == userModel.Email)).Repeat.Once().IgnoreArguments().Return(null);
            Expect.Call(_authService.GeneratePassword()).Repeat.Once().Return(tempPassword);
            Expect.Call(_authService.MemberRole).Repeat.Once().Return(returnMemberRole);
            Expect.Call(_authService.RegisterUser(userModel.Email, tempPassword, returnMemberRole)).Repeat.Once().Return(MembershipCreateStatus.Success);
            _session.Add(member);
            LastCall.Repeat.Once();
            _session.CommitChanges();
            LastCall.Repeat.Once();
            Expect.Call(_configHelper.GetValue("emailSubscription")).Repeat.Once().Return(emailSubscription);
            Expect.Call(_configHelper.GetValue("subjectNotification")).Repeat.Once().Return(subjectNotification);
            Expect.Call(_configHelper.GetValue("MailUseSSL")).Repeat.Once().Return(mailUseSSL);
            _mailHelper.SendMail(emailSubscription, subjectNotification, message, Convert.ToBoolean(mailUseSSL));
            LastCall.Repeat.Once();

            _mock.ReplayAll();
            var result = _controller.Register(userModel);

            _mock.VerifyAll();
            result.AssertActionRedirect().ToAction<MemberController>(c => c.RegisterSuccess());

        }

谢谢你!


单元测试中的 lambda 编译为类级方法(单元测试中的方法)。在控制器内部,不同的 lambda 编译为类级方法(在控制器内部)。使用两种不同的方法,因此 Rhino Mocks 显示期望错误。更多这里:http://groups.google.com/group/rhinomocks/browse_frm/thread/a33b165c16fc48ee?tvc=1 http://groups.google.com/group/rhinomocks/browse_frm/thread/a33b165c16fc48ee?tvc=1

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

使用 rhino 模拟进行 lambda 单元测试失败 的相关文章

随机推荐

  • 从 Python 执行 PowerShell 脚本的最佳方式是什么

    之前关于该主题的所有帖子都涉及其用例的具体挑战 我认为 如果有一篇文章只讨论从 Python 运行 PowerShell 脚本的最简洁方法 并询问是否有人有比我发现的更好的解决方案 那将会很有用 绕过 PowerShell 尝试以与预期不同
  • 如何在 ASP.NET 中动态添加文本框?

    我对我的 asp net 页面有以下要求 用户可以通过单击 添加新类别 超链接在页面 A 上动态添加文本框 他点击页面 A 上的提交按钮并被重定向到页面 B 当他单击此页面中的页面 A 链接时 他添加的文本框应该保留 有人可以帮我解决这个问
  • 类型错误:app.makeSingleInstance 不是函数

    从 Electron v2 0 3 升级到最新版本 v5 0 1 当我尝试运行电子时 出现以下错误 TypeError app makeSingleInstance is not a function 我相信这是因为 api 已经改变了 我
  • 如何将 VectorDrawable 与 Android 工具栏一起使用?

    在工具栏中使用新的 VectorDrawable 的正确方法是什么 我尝试使用app srcCompat元素如下图所示 但没有任何显示 menu menu
  • 如何退出 Haxe/OpenFL 程序?

    我正在使用 Haxe OpenFL 以前的 NME 和 HaxeFlixel 制作游戏 然而 问题是 我似乎找不到一个好方法来制作一个按下时会关闭游戏的 Flixel 按钮 我打算在主菜单上制作一个 退出 按钮 有什么简单的方法可以做到这一
  • jqGrid 3.4 中的自定义数据工具提示

    我一直在使用优秀的 jqGrid 插件 它运行得很好 不过最近 我被要求为网格实现一些自定义工具提示 现在文档 http www secondpersonplural ca jqgriddocs index htm非常彻底 但它没有解决如何
  • 带有透明边框的响应式箭头进度条

    我正在尝试构建一个进度条 如结帐中常见的那样 问题是 箭头之间的边界是透明的 整个事情应该是反应灵敏 到目前为止我已经明白了 http codepen io MrBamblele pen rVBeoz http codepen io MrB
  • Pandas 中的 Vlookup 具有近似匹配

    我需要对两个 pandas 数据框进行 vlookup 样式操作 Excel 中的 Vlookup 函数有一个额外的参数 是否应查找近似匹配或精确匹配 为了精确匹配 我知道我可以使用 join 函数 但是我该如何进行近似匹配以找到下一个更大
  • 从文件中抓取随机行

    我不知道该怎么做 我应该从哪里开始 我用谷歌搜索了这个 但没有找到关于如何从文本文件中提取随机行的结果 我唯一发现的是https github com chrisinajar node rand line https github com
  • 使用 Flask 测试客户端请求传递 cookie 标头

    我在让 Flask 测试客户端传递 cookie 时遇到问题 这段代码曾经有效 我认为我的环境中的某些内容发生了变化 这打破了这一点 我最近创建了一个新的 Python 3 7 virtualenv 并安装了 Flask 1 0 2 fro
  • ionic 2 使用 ion-grid 垂直对齐

    我在 Ionic 2 的屏幕上有 2 个按钮 我想将它们在屏幕中间对齐 一个在另一个之上 但在一起 水平和垂直对齐 我想使用离子网格 没有填充 边距 浮动或百分比 所以我有这个
  • 如何将一个组件放在其他组件之上?

    我有一个JScrollPanel其中包括一个大面板 其本身包括 3 个内面板 我想将一个面板 例如 放在一个特殊的位置 以便始终可以看到 我的意思是用户可以滚动到想要的任何地方 但该面板始终位于其他组件的顶部并且不会移动 我试图通过这样做J
  • Android Edittext Onclick Datepickerdialog 棒棒糖中出现错误

    我正在使用日期选择器对话框 它在 kitkat 上运行正常 但是当我在棒棒糖上运行应用程序时 当我单击编辑文本时 它会打开一个日期选择器对话框 但当我选择日期时 它会不幸地给出停止错误 以下是 edittext 上日期选择器的代码 priv
  • 是否可以反转伪随机数生成器?

    是否可以反转伪随机数生成器 例如 获取生成数字的数组并获取原始种子 如果是这样 这将如何实施 这绝对是可能的 您只需创建一个适合您目的的 PRNG 即可 这完全取决于您需要完成的任务 如果您更详细地描述您的情况 我很乐意提供更多建议 对于一
  • 值类型数组如何存储在 .NET 对象堆中?

    在 NET中 诸如int之类的值类型对象存储在内存中 引用类型对象需要为引用和对象单独分配内存 并且对象存储在 NET对象堆中 而Array是在堆中创建的 那么int 等值类型的数组如何存储在堆中呢 这是否意味着值类型对象可以存储在堆中而无
  • Glassfish 4 服务器意外停止

    我是 GlassFish 和一般应用程序服务器的新手 我有一个运行 Ubuntu 的 Amazon EC2 实例 并安装了 GlassFish 4 它启动时没有问题 但过了一会儿 GlassFish 服务器就自行关闭了 我查看了 serve
  • 如何更改控制台中的光标位置?

    我想用Console ReadLine 在上一行中并使其显示如下 HeresomeText gt input Not like HeresomeText gt input 可以做吗 使用 Write 方法而不是 WriteLine 方法 C
  • 在 React 中使用 document.querySelector?我应该使用 refs 代替吗?如何?

    我现在正在 React 中构建一个轮播 滚动到我正在使用的各个幻灯片document querySelector像这样 useEffect gt document querySelector slide activeSlide scroll
  • 这种日期时间格式有简单的转换吗?

    我正在使用 jQuery 从 JSON feed 中检索数据 并且作为 feed 的一部分 我获得了 datetime 属性 例如 2009 07 01 07 30 09 我想将此信息放入 javascript Date 对象中以方便使用
  • 使用 rhino 模拟进行 lambda 单元测试失败

    如果我有这个测试 Expect Call session Single