c# - 如何使用 FluentAssertions 测试嵌套集合

标签 c# collections tdd fluent-assertions

我有以下规范

BidirectionalGraph Fixture = new BidirectionalGraph();

public void VerticesShouldBeAbleToAssociateMultipleEdges()
{
    int a = 0;
    int b = 1;
    int c = 2;

    Fixture.AddEdge(a, b);
    Fixture.AddEdge(b, c);
    Fixture.AddEdge(c, a);

    Fixture.EdgesFrom(a).Should().BeEquivalentTo
        ( new []{a, b} 
        , new []{a, c});
}

EdgesFrom 是这样定义的

public IEnumerable<int[]> EdgesFrom(int vertex)

但是我的测试失败了

Result Message: Expected collection 

    {{0, 1}, {0, 2}} to be equivalent to 
    {{0, 1}, {0, 2}}.

这对我来说不太有意义,因为它们显然是等价的。 FluentAssertions 是否在比较集合时不起作用 收藏品?

最佳答案

那是因为 collection.Should().BeEquivalentTo() 使用您的类型的默认 Equals() 实现来确保第一个集合中的每个项目都出现在第二个集合中的某个位置。你真正需要的是新equivalency feature我在 Fluent Assertions 2.0 中介绍的。不幸的是,我最近才意识到令人困惑的语法(collection.Should().BeEquivalentTo() 与 ShouldAllBeEquivalentTo())。

关于c# - 如何使用 FluentAssertions 测试嵌套集合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16477381/

相关文章:

c# - 如何使用带有特殊字符(例如 Ø)的电子邮件地址

c# - 自定义 JSON.NET 转换器,将字符串转换为类型

arrays - Node +蒙戈: adding record to array inside collection

tdd - TDD 和 BDD 应该一起使用吗?

machine-learning - TDD 在机器学习中的好处

c# - 在没有参数的另一个函数中使用一个函数的变量?

c# - 有没有办法根据行号获取列值?

java - 是否有用于 Java 自定义集合实现的测试套件?

java - 根据结果​​数据组合两个列表以在 java 8 中创建一个新列表

testing - 如何计算圈复杂度?