流利的断言 - 元组

Posted

技术标签:

【中文标题】流利的断言 - 元组【英文标题】:Fluent Assertion - Tuples 【发布时间】:2018-06-25 00:35:51 【问题描述】:

有没有使用 Fluent Assertions 断言元组的方法?

var t1 = new Tuple<Guid, IEnumerable<Guid>>(Guid.Parse("DA18B047-2F62-45F0-A437-748976B41D22"),
    new []  Guid.Parse("DA18B047-2F62-45F0-A437-748976B41D22") );

var t2 = new Tuple<Guid, IEnumerable<Guid>>(Guid.Parse("DA18B047-2F62-45F0-A437-748976B41D22"),
    new[]  Guid.Parse("DA18B047-2F62-45F0-A437-748976B41D22") );

这是使用以下任一方法断言的:

t1.Should().ShouldBeEquivalentTo(t2);
t1.ShouldBeEquivalentTo(t2);

结果:

Microsoft.VisualStudio.TestTools.UnitTesting.AssertFailedException : Expected item[0] to be (da18b047-2f62-45f0-a437-748976b41d22, System.Collections.Generic.List`1[System.Guid]), but found (da18b047-2f62-45f0-a437-748976b41d22, System.Collections.Generic.List`1[System.Guid]).

Expected item[1] to be (119d681c-9171-4ecd-86b6-3b4417ad167c, System.Collections.Generic.List`1[System.Guid]), but found (119d681c-9171-4ecd-86b6-3b4417ad167c, System.Collections.Generic.List`1[System.Guid]).

我也试过了:

t1.Should().Be(t2);

另外,我也不在乎Guids的顺序。

更新

我目前为此使用 4.1.1。升级到 4.19.4 会产生相同的结果。

我也尝试过在 v5 预发布中使用:

t1.Should().BeEquivalentTo(t2);

【问题讨论】:

我感觉这与this bug有关。 不。它不相关。元组通过使用Equals 比较该元组中的各个类型来实现Equals。由于其中一种类型是IEnumerable&lt;T&gt;,因此这永远不会起作用。 我猜上面的评论应该是公认的答案?最后,我只在我的场景中使用了匿名类型。 【参考方案1】:

如果您使用 4.x,请使用 t1.ShouldBeEquivalentTo(t2)。如果您使用 5.x,请使用 t1.Should().BeEquivalentTo(t2)

【讨论】:

谢谢丹尼斯。刚刚更新了这个问题,提供了更多关于我在做什么和尝试过的信息。 在最终版本中,我决定以特定方式处理元组。 github.com/fluentassertions/fluentassertions/commit/…

以上是关于流利的断言 - 元组的主要内容,如果未能解决你的问题,请参考以下文章

使用 AliasableEvalFunc 并在 Java UDF 中读取一组元组

Python按整数递归排列并返回一组元组

元组的详细操作

Python数据类型 ——— 元组

python3元组

好好学python · 元组