Как сообщить поля идентификаторов при сравнении коллекцийC#

Место общения программистов C#
Anonymous
Как сообщить поля идентификаторов при сравнении коллекций

Сообщение Anonymous »

В своих модульных тестах я хочу сравнить две коллекции сложных объектов.

У объекта есть свойство идентификации (первичный ключ) и некоторые дополнительные свойства, которые необходимо сравнить.
Как отобразить свойство идентификации в сообщении об ошибке.
В настоящее время я просто получаю индекс в ожидаемой коллекции, например:

Ожидаемое свойство фактическое[1].Prop2 для быть одной и той же строкой, но они различаются по индексу 0:

↓ (фактическое)

"invalidValue"

"expectedValue"

↑ (ожидаемое).

Но я хотел бы показать что-то вроде "MyKey = "value0" в сообщении об ошибке

class Foo
{
public string MyKey { get; set; }
public string Prop2 { get; set; }
}

[Fact]
public void Test()
{
var expected = new[] {
new Foo { MyKey = "value0", Prop2 = "expectedValue" },
new Foo { MyKey = "value1", Prop2 = "expectedValue" },
};
var actual = new[] {
new Foo { MyKey = "value0", Prop2 = "expectedValue" },
new Foo { MyKey = "value1", Prop2 = "invalidValue" },
};

actual.Should().BeEquivalentTo(expected, options => {
options.Using(ctx => {
ctx.Subject.Prop1.Should().Be(ctx.Expectation.Prop1);
});
return options;
});
}

Вернуться в «C#»