У меня есть сценарий тестирования, в котором я хочу проверить, равны ли две коллекции. Я нашел класс Microsoft.VisualStudio.QualityTools.UnitTesting.CollectionAssert
, но он работает только на ICollection<T>
. Поскольку я тестирую репозиторий для Entity Framework, и поэтому мне нужно сравнить IObjectSet<T>
s, это не сработает - IObjectSet<T>
не реализует ICollection<T>
.
Могу ли я использовать этот класс для сравнения собраний или мне нужно создать собственную реализацию? (И почему, черт возьми, команда Microsoft не заставила класс работать с 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 не равны. Что я делаю не так?