【问题标题】: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;,因此这永远不会起作用。
  • 我猜上面的评论应该是公认的答案?最后,我只在我的场景中使用了匿名类型。

标签: c# unit-testing tuples fluent-assertions


【解决方案1】:

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

【讨论】:

猜你喜欢
  • 2020-02-08
  • 2014-07-27
  • 2018-12-01
  • 2021-01-18
  • 2020-08-16
  • 2016-04-11
  • 2015-09-23
  • 2021-01-08
  • 2022-07-23
相关资源
最近更新 更多