У меня есть сценарий тестирования, где я хочу проверить, равны ли две коллекции. Я нашел класс Microsoft.VisualStudio.QualityTools.UnitTesting.CollectionAssert
, но он работает только на ICollection<T>
. Поскольку я тестирую репозиторий для Entity Framework, и поэтому вам нужно сравнить IObjectSet<T>
s, что не будет сделано - IObjectSet<T>
не реализует ICollection<T>
.Можно ли использовать Microsoft.VisualStudio.QualityTools.UnitTesting.CollectionAssert на IEnumerable <T>?
Можно ли использовать этот класс для сравнения коллекций, или мне нужно создать собственную реализацию? (И почему, черт возьми, не команда Microsoft сделать работу класса с IEnumerable<T>
вместо этого, так как это «базовый интерфейс» для коллекций?)
EDIT: Это мой тестовый код:
// 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 не равны. Что я делаю не так?
С '.ToList()' вызывает все мои коллекции, код компилируется. Тем не менее, я не могу написать тест, который я могу пройти, - см. Код, который я предоставил в редактировании на мой пост. –
Выключает реализацию '.Equals()' на 'DummyEntity', сделал трюк. –