Fluent assertions 流畅的断言:检查集合是否包含与提供的对象等效的对象?

Fluent assertions 流畅的断言:检查集合是否包含与提供的对象等效的对象?,fluent-assertions,Fluent Assertions,我使用流畅的断言,并愿意使用深度对象图比较测试我的集合是否包含某些对象。我不想实现所有的平等。但是,我找不到方法来测试集合中某个对象的等效包含。例如,此测试失败,我希望它通过: class Student { public string Name { get; set; } } [Test] public void ShouldContainStudent() { new[] { new Student { Name = "George" }, new Student { Na

我使用流畅的断言,并愿意使用深度对象图比较测试我的集合是否包含某些对象。我不想实现所有的平等。但是,我找不到方法来测试集合中某个对象的等效包含。例如,此测试失败,我希望它通过:

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" });
}

没有优雅的方式,但您可以使用谓词:

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

没有优雅的方式,但您可以使用谓词:

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

你今天不能这么做,但从技术上讲,要做到这一点并不复杂。大部分的内部构件已经足够可组合了。你今天不能这么做,但从技术上讲,它不应该那么复杂,使之成为可能。大多数内部构件已经足够可组合。