gpt4 book ai didi

collections - 是否可以在 IEnumerable 上使用 Microsoft.VisualStudio.QualityTools.UnitTesting.CollectionAssert?

转载 作者:行者123 更新时间:2023-12-01 00:04:33 24 4
gpt4 key购买 nike

我有一个测试场景,我想检查两个集合是否相等。我找到了类(class)Microsoft.VisualStudio.QualityTools.UnitTesting.CollectionAssert , 但它只适用于 ICollection<T> .由于我正在测试 Entity Framework 的存储库,因此需要比较 IObjectSet<T> s,那不行 - IObjectSet<T>未实现 ICollection<T> .

有什么方法可以使用这个类来比较集合,还是我必须创建自己的实现? (为什么微软团队不让这个类与 IEnumerable<T> 一起工作,因为那是集合的“基本接口(interface)”?)

编辑:这是我的测试代码:

// 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 处的元素不相等。我究竟做错了什么?

最佳答案

一个厚颜无耻的选择(虽然没有那么多信息)是断言 expected.SequenceEqual(actual)返回 true .

您可以编写一个强制收集的包装器方法(每个都有 .ToList())?但老实说,您不妨调用 .ToList()在单元测试代码中:

CollectionAssert.AreEqual(expected.ToList(), actual.ToList()); // but tidier...

关于collections - 是否可以在 IEnumerable<T> 上使用 Microsoft.VisualStudio.QualityTools.UnitTesting.CollectionAssert?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2058745/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com