Разве метод xUnit Equal не должен возвращать true, если две коллекции равны, то есть иметь одинаковые объекты в одном и том же порядке?
Пример:
var result = new List<item>()
{
new item()
{
TypeId = typesEnum.Integer,
Code = "code"
},
new item()
{
TypeId = typesEnum.Integer,
Code = "code2"
}
}
и Assert.Equal (Ожидаемый результат, результат) возвращает ложь.
и у меня точно такой же список в ожидаемом результате, проверено одно за другим, каждое свойство, тип, все. Когда я пишу свой собственный IEqualityComparer и сравниваю каждое свойство класса элемента в нем, тогда результат верен. Но компаратор по умолчанию возвращает false. Это то, как это должно работать для xUnit? Если так, то вопрос в том, как сравнить, если две коллекции равны, как эквивалент?
Пользовательский компаратор выглядит так:
internal class ItemComparer : IEqualityComparer<Item>
{
public bool Equals(Item x, Item y)
{
return x.Code.Equals(y.Code) && x.TypeId.Equals(y.TypeId)
}
public int GetHashCode(Item obj)
{
return obj.GetHashCode();
}
}
Вот ссылка на похожий вопрос:
CLICK
И ответ таков: он должен работать так, как я думаю, без написания собственного компаратора. Вопрос в том, почему не так?
Я использую xUnit 2.4.1