gpt4 book ai didi

java - Mockito 在调用具有可变数量参数的方法时使用参数匹配器

转载 作者:太空狗 更新时间:2023-10-29 22:42:34 26 4
gpt4 key购买 nike

我试图在 when 调用具有可变参数数量的方法(Java 中的 ... 东西)时使用参数匹配器,但没有成功。我的代码在下面,我还将列出我尝试使用来完成这项工作的所有行。

import static org.mockito.Mockito.*;

public class MethodTest {
public String tripleDot(String... args) {
String sum = "";
for (String i : args) {
sum += i;
}
System.out.println(sum);

return sum;
}

public static void main(String[] args) {
try{
MethodTest mt = mock(MethodTest.class);
when(mt.tripleDot((String[])anyObject())).thenReturn("Hello world!");
System.out.println(mt.tripleDot(new String[]{"1","2"}));
}
catch (Exception e) {
System.out.println(e.getClass().toString() + ": " + e.getMessage());
}
}
}

如果打印语句是:

System.out.println(mt.tripleDot(new String[]{"1"}));

System.out.println(mt.tripleDot("1"));

它将打印“Hello world”。

但是如果打印语句是:

System.out.println(mt.tripleDot(new String[]{"1","2"}));

System.out.println(mt.tripleDot("1","2"));

它将打印“null”。

我也试过在 when 调用中做一些变化,例如 anyObject()anyString() 但无济于事。我不确定 Mockito 是否可以处理关于包含可变数量参数的方法调用的参数匹配器。有可能吗?如果是这样,我应该怎么做才能使这项工作正常进行?

最佳答案

试试 anyVararg()匹配器。这是在 1.8.1 中引入的。

关于java - Mockito 在调用具有可变数量参数的方法时使用参数匹配器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10214311/

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