7

我正在使用 mockito 编写一个单元测试来模拟依赖项并检查我们是否使用正确的参数调用它。我们应该传入一个字符串,所以我试图匹配该函数参数,但不断言整个字符串,以防我们更改措辞。所以我只想匹配消息中的一个单词,但那个单词可能在句子的开头或中间,所以它可能以大写字母开头。

飞镖匹配器具有equalsIgnoringCasecontains,但我找不到任何可以同时处理两者的匹配器,例如 containsIgnoringCase。有没有办法检查子字符串,同时也忽略匹配器中的大小写?

4

3 回答 3

19

您可以将正则表达式传递给属性设置为的contains方法。caseSensitivefalse

string.contains(new RegExp(r'your-substring', caseSensitive: false));
于 2019-08-13T21:37:46.950 回答
3

最简单的方法?这就是我在 DART 中的做法,但我相信它适用于所有语言。

 if (string1.toLowerCase().contains(string2.toLowerCase())) {
    //TODO: DO SOMETHING
  }
于 2020-10-29T11:05:44.400 回答
1

由于 OP 使用它应该是 Matcher 的约束更新了问题(对于 mockito):

可以使用任意代码创建匹配器predicate。在这种情况下,使用 Ajmal 的回答:

Matcher containsSubstringNoCase(String substring) =>
  predicate((String expected) => expected.contains(RegExp(substring, caseSensitive: false)));

然后:

expect('Foo', containsSubstringNoCase('foo'));  // true
于 2021-08-26T23:25:10.687 回答