Сравнение без учета регистра для нескольких вариантов - PullRequest
0 голосов
/ 14 сентября 2018

Я пытаюсь использовать NUnit, чтобы написать утверждение, что все (строковые) члены коллекции являются одной из множества возможностей без учета регистра.Я думал, что понял это, но это не скомпилируется.

Я думал, что этот синтаксис будет работать:

Assert.That(new string[] { "red", "red", "red", "green" }, 
    Is.All.AnyOf(new string[] { "RED", "BLUE", "GREEN" }).IgnoreCase);

Однако это ошибки с

'Constraint' does not contain a definition for 'IgnoreCase' and no
extension method 'IgnoreCase' accepting a first argument of
type 'Constraint' could be found (are you missing a using directive or an
assembly reference?)

Более простой тест одного элемента - это одна из множества возможностей внечувствительный к регистру способ работает, как и ожидалось.

Assert.That("red", Is.AnyOf(new string[] { "RED", "BLUE" }).IgnoreCase);

Как мне сформулировать это утверждение?Или это ошибка, что это не работает?

1 Ответ

0 голосов
/ 15 сентября 2018

Вы столкнулись с проблемой из-за очередности выполнения операций.Вы хотите, чтобы модификатор .IgnoreCase применялся к AnyOfConstraint, но он применяется к результату IsAll, который является базовым уровнем Constraint, который не поддерживает этот модификатор.

За исключением изменений в NUnit, вам нужно обойти это.Самым простым может показаться

Assert.That(new string[] { "red", "red", "red", "green" }, 
  new AllItemsConstraint(
    Is.AnyOf(new string[] { "RED", "BLUE", "GREEN" }).IgnoreCase));

Я не пробовал этого, поэтому проверьте мой синтаксис, орфографию и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...