2

我有一个单元测试,我在其中模拟具有 DateTime 属性的结果,该属性在我执行操作时设置 - “CreatedOn”属性。由于我无法同时创建结果并执行操作,因此我的 Assert.AreEqual 总是失败。我如何测试我的两个对象是否相同,除了某些 DateTime 字段?

4

2 回答 2

1

我通常会做以下事情之一:

  • 您可以为您的 SUT 创建 TimeProvider 依赖项并使用该提供程序来获取当前日期。这将允许您设置任何当前日期。
  • 如果您正在比较的对象由 SUT 依赖项之一返回,那么您可以设置模拟依赖项以返回您在测试中检查的完全相同的对象实例。
于 2013-10-31T19:16:17.640 回答
1

这里实际上有两个选择:

  1. 在创建时间后更改CreatedOn以使属性匹配。考虑到您的 API,这可能会也可能不会。
  2. 创建一个检查所有其他属性的方法,但忽略该CreatedOn属性。就用那个。这实际上只是多次Assert.AreEqual调用,但在单个属性上,而不仅仅是整个对象。
于 2013-10-31T19:10:12.093 回答