gpt4 book ai didi

java - Mockito 验证参数包含另一个忽略大小写的字符串

转载 作者:搜寻专家 更新时间:2023-11-01 02:58:56 25 4
gpt4 key购买 nike

我得到的是这一行:

verify( mockAppendable ).append( org.mockito.Mockito.contains( msg ) );

...但我希望这个测试不区分大小写。我该怎么做?

最佳答案

On the page, what do they mean by "you can extract method" and is it possible to use a Java 8 lambda to make this a one-liner?

在单行中使用来自 here 的不区分大小写的代码:

verify(mockAppendable)
.append(
argThat(arg ->
Pattern.compile(Pattern.quote(msg), Pattern.CASE_INSENSITIVE).matcher(arg).find()));

因此他们通过跳过指定自定义错误消息来允许使用 lambda 版本。

“你可以提取一个方法”,他们的意思是:

verify(mockAppendable).append(argThat(containsCaseInsensitive(msg)));

方法定义为:

public static ArgumentMatcher<String> containsCaseInsensitive(final string s) {
if (s == null) throw new IllegalArgumentException("s is null");
final Pattern pattern = Pattern.compile(Pattern.quote(s), Pattern.CASE_INSENSITIVE);
return new ArgumentMatcher<String>() {

@Override
public boolean matches(String arg) {
return arg != null && pattern.matcher(arg).find();
}

@Override
public String toString() {
return String.format("[should have contained, ignoring case, \"%s\"]", s);
}
};
}

这是完全可重用的,您可以将其放入 MocitoMatchers 等新类中,并像任何内置匹配器一样从许多测试中调用。

关于java - Mockito 验证参数包含另一个忽略大小写的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42186987/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com