Как сравнить строку без учета регистра с помощью FluentAssertions? С#

Как я могу легко сравнивать строки без учета регистра с помощью FluentAssertions?

Что-то вроде:

symbol.Should().Be(expectedSymbol, StringComparison.InvariantCultureIgnoreCase);

Изменить: относительно возможного дубликата и кода: symbol.Should().BeEquivalentTo(expectedSymbol);

это сравнение с помощью CurrentCulture. И в такой ситуации, как турецкая культура, она будет тормозить. Где Thread.CurrentThread.CurrentCulture = new CultureInfo("tr-TR", false); string upper = "in".ToUpper(); // upper == "İN" "in".Should().BeEquivalentTo("In"); // It will fail

поэтому часть "StringComparison.InvariantCultureIgnoreCase" здесь имеет решающее значение.


person Krzysztof Morcinek    schedule 28.12.2017    source источник
comment
Почему бы вам просто не вызвать .ToLower() для строки, с которой вы сравниваете?   -  person Glubus    schedule 28.12.2017
comment
@Glubus ищет лучший способ. Обратите внимание, что когда вы используете ToLower() и это не удается, FluentAssertions сообщит об измененных значениях (в нижнем регистре).   -  person Krzysztof Morcinek    schedule 28.12.2017


Ответы (1)


Ты можешь использовать

symbol.ToLower().Should().Be(expectedSymbol.ToLower());

OR

Вместо Be используйте BeEquivalentTo

symbol.Should().BeEquivalentTo(expectedSymbol);

BeEquivalentTo состояния метаданных

Утверждает, что строка точно такая же, как и другая строка, включая любые начальные и конечные пробелы, за исключением регистра.

person Nikhil Agrawal    schedule 28.12.2017
comment
Это хорошо, но, как я добавил в вопросе, для тюркской культуры это не сработает. - person Krzysztof Morcinek; 28.12.2017
comment
Затем используйте дублирующие вопросы, принятые ответы. symbol.Should().Equal(expectedSymbol, (o1, o2) => string.Compare(o1, o2, StringComparison.InvariantCultureIgnoreCase)) - person Nikhil Agrawal; 28.12.2017