Мы написали тест, который выглядит следующим образом. Для этого теста требуется, чтобы мы создали en Equal
-overload для класса CodeTableItem
:
ICollection<CodeTableItem> expectedValutaList = new List<CodeTableItem>();
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
-функцию, unit test все еще работает зеленым цветом, хотя мы не проверяем все поля. Мы хотим избежать этого загрязнения Equality
(см. Test Specific Equality), который был написан только для соответствия тесту.
Мы попытались использовать OfLikeness
и переписали тест таким образом:
ICollection<CodeTableItem> expectedValutaList = new List<CodeTableItem>();
expectedValutaList.Add(new CodeTableItem("DKK", "DKK"));
expectedValutaList.Add(new CodeTableItem("EUR", "EUR"));
var expectedValutaListWithLikeness =
expectedValutaList.AsSource().OfLikeness<List<CodeTableItem>>();
RepoDac target = new RepoDac();
ICollection<CodeTableItem> actual;
actual = target.GetValutaKd();
expectedValutaListWithLikeness.ShouldEqual(actual.ToList());
Но тест терпит неудачу, потому что Capacity
не равен. Я написали код, который многократно повторял отражение, и, как правило, заканчивал реализацию перегрузок для игнорирования полей. Есть ли способ игнорировать определенные поля с помощью OfLikeness
или ShouldEqual
? Или есть ли другой способ решения этой проблемы?