我有一个测试场景,我想检查两个集合是否相等。我找到了这个类Microsoft.VisualStudio.QualityTools.UnitTesting.CollectionAssert
,但它只适用于ICollection<T>
. 由于我正在测试 Entity Framework 的存储库,因此需要比较IObjectSet<T>
s,这不会 -IObjectSet<T>
不会实现ICollection<T>
.
有什么方法可以使用这个类来比较集合,还是我必须创建自己的实现?(为什么微软团队不让这个类使用IEnumerable<T>
,因为那是集合的“基本接口”?)
编辑:这是我的测试代码:
// Arrange
var fakeContext = new FakeObjectContext();
var dummies = fakeContext.Dummies;
var repo = new EFRepository<DummyEntity>(fakeContext);
// Act
var result = repo.GetAll();
// Assert
Assert.IsNotNull(result, NullErrorMessage(MethodName("GetAll")));
Assert.IsInstanceOfType(result, typeof(IEnumerable<DummyEntity>), IncorrectTypeMessage(MethodName("GetAll"), typeof(IEnumerable<DummyEntity>)));
CollectionAssert.AreEqual(dummies.ToList(), result.ToList());
最后一行的CollectionAssert.AreEqual
调用失败,指出索引 0 处的元素不相等。我究竟做错了什么?