首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Mockito在调用具有可变数量参数的方法时使用参数匹配器

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

Stack Overflow用户
提问于 2012-04-19 01:03:29
回答 2查看 15.8K关注 0票数 17

我试图在一个方法的when调用中使用参数匹配器,该方法具有可变数量的参数(Java语言中的... ),但没有成功。我的代码如下,我还将列出我尝试使用的所有行。

代码语言:javascript
复制
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());
        }
    }
}

如果打印语句为:

代码语言:javascript
复制
System.out.println(mt.tripleDot(new String[]{"1"}));

或

代码语言:javascript
复制
System.out.println(mt.tripleDot("1"));

它将打印"Hello world“。

但是如果print语句是:

代码语言:javascript
复制
System.out.println(mt.tripleDot(new String[]{"1","2"}));

或

代码语言:javascript
复制
System.out.println(mt.tripleDot("1","2"));

它将打印"null“。

我还尝试在when调用中做一些变化,比如anyObject()或anyString(),但都无济于事。我不确定Mockito是否可以使用参数匹配器来处理包含可变数量参数的方法调用。这有可能吗?如果是这样的话,我应该怎么做才能让它正常工作呢?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-19 01:06:54

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

票数 41
EN

Stack Overflow用户

发布于 2012-04-19 01:10:04

试试Mockito.anyVararg()。应该能行得通。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10214311

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档