流利的断言 - 元组
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<T>
,因此这永远不会起作用。
我猜上面的评论应该是公认的答案?最后,我只在我的场景中使用了匿名类型。
【参考方案1】:
如果您使用 4.x,请使用 t1.ShouldBeEquivalentTo(t2)
。如果您使用 5.x,请使用 t1.Should().BeEquivalentTo(t2)
。
【讨论】:
谢谢丹尼斯。刚刚更新了这个问题,提供了更多关于我在做什么和尝试过的信息。 在最终版本中,我决定以特定方式处理元组。 github.com/fluentassertions/fluentassertions/commit/…以上是关于流利的断言 - 元组的主要内容,如果未能解决你的问题,请参考以下文章