我正在尝试比较IEnumerable<IDictionary<string, object>>
类型的2个对象ExpectedItems和resultItems,但并不能做很多事情。
此外,代码中初始化了一个字典,另一个字典是通过外部API的JSON响应构建的。由于JSON并不真正关心对象内属性的顺序,因此排除了SequenceEquals
。
我确实有两个相等的对象,所有这些低估的方法都失败了,
第一,CollectionAssert.AreEqual(expectedItems, resultItems)
第二,
var expectedItems = entries.Select(e => e.Serialize()).ToList();
resultItems.Zip(expectedItems,(objects, dictionary) =>
objects.OrderBy(pair =>pair.Key).SequenceEqual(dictionary.OrderBy(pair => pair.Key)))
.Should()
.NotContain(false);
对象(据我所知)是相等的。
我可以尝试的任何事情,或者我目前做错的任何事情?
编辑
API从时间戳中修剪滴答计数,这就是失败的原因。如何在ExpectedItems词典中修剪时间戳,然后进行比较?因此,集合必须相同,并且时间戳的比较需要被覆盖。任何人?
最佳答案
检查两件事:
对象是否预先实现了Equals()
方法?如果不相等,则仅检查引用,由于它们是两个不同的实例,因此它们看起来是不同的。
另一个选择可能是,因为您的对象代表一个时间戳,正如我根据图片所猜测的那样。
即使它正确实现了Equals,对象的毫秒数(如果存在)是否相同?