gpt4 book ai didi

unit-testing - 在 DateTime 中使用 Moles

转载 作者:行者123 更新时间:2023-12-04 04:47:31 25 4
gpt4 key购买 nike

我开始在单元测试中使用 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com