Свободное утверждение — кортежи

Есть ли способ утверждать кортежи с помощью 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);

Кроме того, меня также не беспокоит порядок гидов.

Обновить

В настоящее время я использую 4.1.1 для этого. Обновление до 4.19.4 дает тот же результат.

Я также пробовал в предварительной версии v5, используя:

t1.Should().BeEquivalentTo(t2);

person Andez    schedule 16.01.2018    source источник
comment
У меня такое ощущение, что это связано с этой ошибкой.   -  person Chris Pickford    schedule 16.01.2018
comment
Неа. Это не связано. Кортеж реализует Equals, сравнивая отдельные типы в этом кортеже с помощью Equals. Поскольку одним из типов является IEnumerable<T>, это никогда не сработает.   -  person Dennis Doomen    schedule 16.01.2018
comment
Я думаю, комментарий выше должен быть принятым ответом? В конце концов я просто использовал анонимные типы для своего сценария.   -  person Andez    schedule 16.01.2018


Ответы (1)


Используйте t1.ShouldBeEquivalentTo(t2), если вы используете 4.x. Если вы используете 5.x, используйте t1.Should().BeEquivalentTo(t2).

person Dennis Doomen    schedule 16.01.2018
comment
Спасибо Денис. Просто обновил вопрос, добавив немного больше информации о том, что я делал и пробовал. - person Andez; 16.01.2018
comment
В финальном релизе я решил по-особому работать с кортежами. github.com/fluentassertions/fluentassertions/commit/ - person Dennis Doomen; 06.02.2018