Применение [AutoFixture] SemanticComparison OfLikeness к последовательностям/коллекциям/массивам/IEnumerable

Мы написали тест, который выглядит следующим образом. Этот тест требует, чтобы мы создали enEqual-перегрузка дляCodeTableItem-класс:

ICollection expectedValutaList = new List();
expectedValutaList.Add(new CodeTableItem("DKK", "DKK"));
expectedValutaList.Add(new CodeTableItem("EUR", "EUR"));
RepoDac target = new RepoDac(); 

var actual = target.GetValutaKd();

CollectionAssert.AreEqual(expectedValutaList.ToList(),actual.ToList());

Тест работает нормально, но имеет неприятную зависимость отEquality-функция, то есть если я расширимCodeTableItem-класс с еще одним полем и забывает расширитьEquals-функция, модульный тест по-прежнему работает зеленым цветом, хотя мы не тестируем все поля. Мы хотим избежать этого Equalityзагрязнения (см. Проверка конкретного равенства), который был написан только для того, чтобы соответствовать тесту.

Мы пытались использовать OfLikeness,и переписали тест таким образом:

ICollection expectedValutaList = new List();
expectedValutaList.Add(new CodeTableItem("DKK", "DKK"));
expectedValutaList.Add(new CodeTableItem("EUR", "EUR"));
var expectedValutaListWithLikeness = 
          expectedValutaList.AsSource().OfLikeness>();

RepoDac target = new RepoDac(); 
ICollection actual;

actual = target.GetValutaKd();

expectedValutaListWithLikeness.ShouldEqual(actual.ToList());

Но тест не проходит, потому что Capacityне равно. Я писал код, который много раз запускал рефлексию, и обычно заканчивал тем, что реализовывал перегрузки для игнорирования полей. Есть ли способ игнорировать определенные поля с помощью OfLikenessили ShouldEqual? Или есть какой-то другой способ решения этой проблемы?

12
задан Ruben Bartelink 10 October 2012 в 12:18
поделиться