Свободные утверждения: проверить, содержит ли коллекция объект, эквивалентный предоставленному?

Я использую Fluent Assertions и хочу проверить, содержит ли моя коллекция какой-либо объект, используя глубокое сравнение графов объектов. Я не хочу реализовывать все это равенство членов. Тем не менее, я не могу найти способ сделать тест на предмет эквивалентности некоторого объекта в коллекции. Например, этот тест не пройден, и я хочу, чтобы он прошел:

class Student
{
    public string Name { get; set; }
}

[Test]
public void ShouldContainStudent()
{
    new[] { new Student { Name = "George" }, new Student { Name = "Anna" } }.Should()
        .Contain(new Student { Name = "Anna" });
}

Есть ли какой-нибудь элегантный способ сделать это? Что-то вроде этого?

[Test]
public void ShouldContainStudent()
{
    new[] { new Student { Name = "George" }, new Student { Name = "Anna" } }.ShouldContainEquivalent(new Student { Name = "Anna" });
}

1 ответ

Решение

Нет элегантного способа, но вы можете использовать предикат:

[Test]
public void ShouldContainStudent()
{
    new[] { new Student { Name = "George" }, new Student { Name = "Anna" } }
        .Should().Contain(s => s.Name == "Anna");
}
Другие вопросы по тегам