AreEqual(new object(), new object())
Имею необходимость сравнить объекты на тождественное равенство,
а именно надо чтобы Assert.AreEqual(new object(), new object()); (использую MSTest) или его аналог считал что объекты одинаковы, ведь у них совпадает тип и оба не null, а полей или свойств для сравнения нет. Сравнение по ссылке меня не интересует.
FluentAssertions и Shouldly не считают new object() и new object() одинаковыми. А DeepEqual имеет баг и считает объекты одинаковыми даже независимо от типа.



Ответы (1 шт):
Извините но вы программируете и путатете не много педали. Ваше предположение или представление не верно о равенствах ссылочных типов данных. Любые ссылочные типы данных не стоит сравнивать на прямую ведь они содержат в себе ссылку на объект, а не объект.
object actual = new object(); object expected = actual;
Assert.AreEqual(actual, expected); //true сравниваются значения в переменных.
object actual = new object(); object expected = new object();
Assert.AreEqual(actual, expected); //false также сравниваются значения в переменных, но тут уже это различные объекты.
костыли предлагаемые вам по сути это перевод в значимую переменную чтоб можно было сравнить не прибегая методу Equal