Свободные утверждения BeEquivalentTo для смешанного объекта с разницей в регистрах соответствующих строк - PullRequest
1 голос
/ 24 марта 2020

У меня есть два объекта с одинаковыми данными: double, long, string. Моя проблема в объекте A, все строки - в верхнем регистре, а в объекте B - в верхнем и нижнем.

objectA.Should.Should().BeEquivalentTo(objectB);

Сравнение не удается, сказав

Ожидаемый член stringName будет "Super", но "SUPER" отличается рядом с "UPER"

Есть ли способ сказать, если строка сравнения мы игнорируем, что это все Прописать или преобразовать всю заглавную строку?

Я мог бы провести foreach l oop go через все и преобразовать, но мне интересно, могу ли я включить свое сравнение в мой свободный утверждение.

Ответы [ 2 ]

2 голосов
/ 24 марта 2020

Вы можете сделать что-то вроде:

objectA.Should.Should().BeEquivalentTo(objectB, 
 opt => opt.Using<string>(ctx => ctx.Subject.Should().BeEquivalentTo(ctx.Expectation)).WhenTypeIs<string>());

Запутанная часть заключается в том, что BeEquivalentTo на string выполняет сравнение без учета регистра и не имеет ничего общего с внешним BeEquivalentTo.

0 голосов
/ 24 марта 2020

Я думаю, вы захотите сравнить свойства по отдельности, если вы просто сравниваете два объекта. Если вы хотите сравнить список объектов, лучше всего это сделать, как вы отметили, oop.

Что касается сравнения строк, то вы сможете сравнить их примерно так

ObjectA.StringProperty.Should().BeEqulivalentTo(ObjectB.StringProperty);

Это позволит игнорировать строковый регистр.

...