В своих модульных тестах я хочу сравнить две коллекции сложных объектов.
У объекта есть свойство идентификации (первичный ключ) и некоторые дополнительные свойства, которые необходимо сравнить.
Как отобразить свойство идентификации в сообщении об ошибке.
В настоящее время я просто получаю индекс в ожидаемой коллекции, например:
Ожидаемое свойство фактическое[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;
});
}