.net 在两个对象上Assert.AreEqual,但忽略DateTime属性
我有一个单元测试,其中我模拟了一些东西的结果,这些东西有一个DateTime属性,该属性是在我执行操作时设置的——一个“CreatedOn”属性。由于我无法创建结果并同时执行操作,因此Assert.AreEqual总是失败。如何测试我的两个对象除了某些日期时间字段外是否相同?这里有两个选项:.net 在两个对象上Assert.AreEqual,但忽略DateTime属性,.net,unit-testing,.net,Unit Testing,我有一个单元测试,其中我模拟了一些东西的结果,这些东西有一个DateTime属性,该属性是在我执行操作时设置的——一个“CreatedOn”属性。由于我无法创建结果并同时执行操作,因此Assert.AreEqual总是失败。如何测试我的两个对象除了某些日期时间字段外是否相同?这里有两个选项: 在创建时间之后更改CreatedOn,使属性匹配。考虑到您的API,这可能是可能的,也可能是不可能的 创建一个检查所有其他属性的方法,但忽略CreatedOn属性。就用这个吧。这实际上只是多个Assert.
CreatedOn
,使属性匹配。考虑到您的API,这可能是可能的,也可能是不可能的CreatedOn
属性。就用这个吧。这实际上只是多个Assert.AreEqual
调用,而是针对单个属性,而不仅仅是整个对象我通常会做以下事情之一:
- 您可以为SUT创建TimeProvider依赖项,并使用该提供程序获取当前日期。这将允许您设置任何当前日期
- 若您正在比较的对象是由其中一个SUT依赖项返回的,那个么您可以设置模拟依赖项以返回与您在测试中检查的对象实例完全相同的对象实例