unit-testing - 在 DateTime 中使用 Moles

标签 unit-testing moles pex-and-moles

我开始在单元测试中使用 Moles,并且在文档方面有点挣扎。

我想要痣 DateTime.Now。

如果您查看执行此操作的旧方法是添加对 mscorlib 的引用,然后为其添加一个 stubx 文件(添加新项目 -> stub 和痣进行测试)。

“用于测试的 stub 和痣”模板已被弃用,您需要做的就是右键单击一个引用并选择“添加痣组件”,这很好。

VS2010 不允许您直接添加对 mscorlib 的引用,因为我们有对“系统”的引用,这是可以的,因为我可以在对象浏览器中看到 DateTime 作为该命名空间的一部分。

如果我为 System 引用添加一个 moles 程序集并重建,我仍然无法解析 MDateTime。

有什么建议么 ?

最佳答案

对于 mscorlib 的 Moles,您需要直接右键单击您的测试项目的 References。您将拥有 Add Moles Assembly for mscorlib
然后,将 using System.Moles; 添加到您的测试类中,因为您需要 System.DateTime 的 Moles(实际上,您还需要更多)。

[TestMethod()]
[HostType("Moles")]
public void DateTimeMolesTest()
{
    DateTime date = new System.DateTime(2000, 1, 1, 2, 3, 4, 5);
    MDateTime.NowGet = () => date;
    Assert.AreEqual(date, DateTime.Now);
}

如果您运行此测试,它将失败,因为您需要添加:
using Microsoft.Moles.Framework;
[assembly: MoledType(typeof(System.DateTime))]

然后,您的测试将成功。
不要忘记 Moles 不能与某些特殊类型的 mscorlib 一起使用。

关于unit-testing - 在 DateTime 中使用 Moles,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5961982/

相关文章:

java - Spring Boot - MockMVC 创建 bean 时出错

unit-testing - 在 Java 环境中创建自动化测试的最佳方式

mocking - 没有 Pex 的痣?

c# - Linq Join 的摩尔

tfs - 在使用 moles 程序集的项目上使用 TFS2010 构建失败并显示 -1002,因为无法解析引用

asp.net-mvc - 为什么选择Moles作为我的模拟框架?

firebase - 如何在 flutter 中模拟 FirebaseApp

silverlight - 在 Silverlight 单元测试中处理 DependencyObjects

c# - 当测试的主机类型为 "Moles"时无法从配置文件访问信息

.net - 如何调试使用 Microsoft Moles 框架的单元测试