Case针对多个选项的集合的不敏感比较

问题描述 投票:2回答:1

我正在尝试使用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);

我应该如何说出这个断言?或者这是一个错误,这不起作用?

nunit
1个回答
1
投票

由于操作的优先顺序,您遇到了问题。您希望.IgnoreCase修改器应用于AnyOfConstraint,但它应用于IsAll的结果,Constraint是不支持该修饰符的基础级别Assert.That(new string[] { "red", "red", "red", "green" }, new AllItemsConstraint( Is.AnyOf(new string[] { "RED", "BLUE", "GREEN" }).IgnoreCase));

除非对NUnit进行更改,否则您需要一种解决方法。最简单的似乎是

qazxswpoi

我没有试过这个,所以检查我的语法,拼写等。

© www.soinside.com 2019 - 2024. All rights reserved.