Assert.AreEqual对两个对象但忽略DateTime属性

时间:2013-10-31 19:03:07

标签: .net unit-testing

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

2 个答案:

答案 0 :(得分:1)

这里有两个选择:

  1. 在创建时间之后更改CreatedOn以使属性匹配。根据您的API,这可能是也可能是不可能的。
  2. 创建一个检查所有其他属性的方法,但忽略CreatedOn属性。只是使用它。这实际上只是多个Assert.AreEqual调用,但是对于单个属性,而不仅仅是整个对象。

答案 1 :(得分:1)

我通常做以下事情之一:

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