두 개의 콜렉션이 동일한 지 확인하고 싶은 테스트 시나리오가 있습니다. Microsoft.VisualStudio.QualityTools.UnitTesting.CollectionAssert
클래스를 찾았지만 ICollection<T>
에서만 작동합니다. Entity Framework 저장소를 테스트 중이므로 IObjectSet<T>
을 비교해야합니다. 즉, IObjectSet<T>
은 ICollection<T>
을 구현하지 않습니다.IEnumerable <T>에 Microsoft.VisualStudio.QualityTools.UnitTesting.CollectionAssert를 사용할 수 있습니까?
이 클래스를 사용하여 collecitons를 비교할 수있는 방법이 있습니까? 아니면 직접 구현을 만들어야합니까? (즉, 컬렉션에 대해 "기본 인터페이스"있는 그대로 그리고 도대체는 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의 요소가 동일하지 않습니다. 내가 도대체 뭘 잘못하고있는 겁니까?
'.ToList()'가 모든 콜렉션을 호출하면 코드가 컴파일됩니다. 그러나 필자는 통과 할 수있는 테스트를 작성할 수 없습니다. 게시물에 편집 코드를 제공합니다. –
'DummyEntity'에'.Equals()'를 구현하는 것이 트릭을 만들었습니다. –