在处理 MSpec 中的匿名方法时,是否有设置 [HostType("Moles")] 的解决方法?

2024-04-19

我使用 Pex 和 Moles 进行低级单元测试,但我也在探索 MSpec 进行业务逻辑验证,并希望继续使用 Moles 来保持一致性。我认为问题在于 MSPec 使用匿名方法,因此无法应用 HostType("Moles") 属性。例如:

Because of = () =>
   employeeList = EmployeeManager.GetUsersByRoles(rolesToLoad);

It should_return_a_list_of_employees = () =>
   employeeList.ShouldNotBeNull();

我正在嘲笑“GetUsersByRoles”内部调用的角色提供程序,当我尝试通过 MSpec 运行此测试时,我收到标准“Moles 要求测试位于仪表化进程中”错误,并附有添加 [HostType("摩尔”)]我的测试方法。这里有任何解决方法或其他选项吗?

旁注:我已经下载了 MSMSpec.tt 并修改了它以包含生成的 VSTests 上的属性,但我希望能够通过其自己的运行程序或 TestDriven.net 直接运行 MSpec 测试,以便获得友好的输出对于 BA 和企业主。


解决方法是将匿名方法替换为非匿名方法。 Moling Mspec 基本上是不可能的。

Moles 无法绕过匿名方法。原因是这些方法必须是可寻址的、可绕行的。匿名方法不是隐式可寻址的,因为它们是在运行时生成和引用的。简而言之,您不能通过类调用匿名方法,因为它是,嗯......匿名的.

Moles 手册指出,“Moles 可用于绕过任何 .NET 方法,包括密封类型中的非虚拟方法和静态方法。”因此,在 Moles 使用反射来识别类成员的假设下进行操作是一个安全的选择。任何不能通过 delegate、Action 或 Func 调用的东西都不能被摩尔。

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

在处理 MSpec 中的匿名方法时,是否有设置 [HostType("Moles")] 的解决方法? 的相关文章

  • 如何在谷歌自定义菜单中制作图标[重复]

    这个问题在这里已经有答案了 在 Google 应用程序中 文档 表格等 是否可以使自定义菜单中的图标与插入菜单中的图标相似 如果是这样我该怎么办 html 服务 图表 链接 图像旁边 甚至粗体 斜体等旁边的内容 Thanks 没有公开的方法
  • 如何将秒转换为 hhmmss

    我到处寻找将秒转换为 hh mm ss 但找不到合适的 我创建了一个程序 允许用户输入两个不同的时间 然后计算差异 输入的时间以 hh 3600 mm 60 ss 分割 然后转换为秒并相互减去以计算秒差 例如 12 12 12 和 13 1
  • 如何确定两个泛型类型值是否相等?

    Update 我很抱歉 我的示例代码包含一个错误 导致很多我不理解的答案 代替 Console WriteLine 3 this Equals go1 Equals go2 我本来想写 Console WriteLine 3 this Eq
  • 更改 Android 操作栏菜单项的点击图标

    我正在使用 Sherlock 操作栏 我的操作栏上有 2 个项目 当选择该项目 活动 时 我想更改图标的图像 这是我的Java代码 Override public boolean onPrepareOptionsMenu Menu menu
  • Jquery - DataTables [tableTools]:仅导出可见行

    我刚刚开始使用 jQuery DataTables 使用DataTables的tableTools 是否可以仅导出可见行而不是所有行 例如 如果分页设置为 10 我预计只会导出 10 行 搜索结果也是如此 这是代码的一部分 document

随机推荐