当前位置: 首页 > 面试题库 >

使用Mockito与具有相同参数的多次调用相同方法

籍兴文
2023-03-14
问题内容

有没有一种方法可以使存根方法在后续调用中返回不同的对象?我想这样做是为了测试来自的不确定响应ExecutorCompletionService。即,不管方法的返回顺序如何进行测试,结果都保持恒定。

我要测试的代码看起来像这样。

// Create an completion service so we can group these tasks together
ExecutorCompletionService<T> completionService =
        new ExecutorCompletionService<T>(service);

// Add all these tasks to the completion service
for (Callable<T> t : ts)
    completionService.submit(request);

// As an when each call finished, add it to the response set.
for (int i = 0; i < calls.size(); i ++) {
    try {
        T t = completionService.take().get();
        // do some stuff that I want to test
    } catch (...) { }        
}

问题答案:

你可以使用thenAnswer方法来做到这一点(与链接时when):

when(someMock.someMethod()).thenAnswer(new Answer() {
    private int count = 0;

    public Object answer(InvocationOnMock invocation) {
        if (count++ == 1)
            return 1;

        return 2;
    }
});

或使用等效的静态doAnswer方法:

doAnswer(new Answer() {
    private int count = 0;

    public Object answer(InvocationOnMock invocation) {
        if (count++ == 1)
            return 1;

        return 2;
    }
}).when(someMock).someMethod();


 类似资料:
  • 当我多次调用同一个函数时,每次都传递了不同的参数,我会这样做: 有没有更方便的方法做到这一点呢?

  • 我有一个类,比如说,它有两个函数,它们的名称相同,参数数量相同,但参数类型不同。现在,我假设模拟它们的返回值应该像使用两个语句和适当的匹配器一样,但是当我尝试得到以下错误时: 组织。莫基托。例外。滥用。InvalidUseOfMatcherException:此处检测到错误放置的参数匹配器: - 以下是我尝试的一个例子: 虽然我不是Mockito的巫师,但我已经使用它一段时间了,从来没有遇到过这个

  • 目前,我有一个类分数,它允许我用三种不同的方式创建分数 对于一个整数,在这种情况下,给定的整数将是分子,分母将设置为1 有2个整数,分子和分母 最后一种方法是解析一个字符串,该字符串必须与REGEX-?\d/[1-9]\d* gcd将尽可能减少生成的分数。 我现在想实现的是,具有相同分子和分母的分数实例具有相同的引用例如。 应该返回true。 我研究了一些关于泛型和边界的章节,但我不确定这是否是我

  • 目前,我得到了以下函数,该函数遍历Pandas DataFrame()列并创建一个计数: 我有许多参数要分配给/调用函数——目前,我正在做以下工作: 这样做效果很好,但我想知道是否有更实用/有效的方法可以达到同样的效果。 我正在考虑将变量名添加到列表中,例如、、、等,并形成某种循环——如果这样做可行的话。。。 因此,也许有点像: 或者,有没有使用熊猫的方法?

  • 问题内容: 我有使用JQuery..I米一个问题在我的代码发送字段名和序列号,其通过获取其数据的ctrller 和并且与序列表中没有given..And生成预览显示面板更新字段名与插入的字段..现在,我再次尝试更改字段名称。tat是现在,当我单击生成的显示面板字段时,相应的设置将打开,我将尝试立即更改字段名称 两者和都相同..在我发送的是字段名和序列号 在功能2中,我要发送相同的字段名和(但其他值

  • 在下面的代码中,我编写了两种方法: 将变量定义为String的变量 根据键入的内容返回两种不同结果的方法 我有一个名为的变量在中,而中的参数被命名为。在中,我使用而不是-为什么这样工作? 调用方法时,参数是否无关紧要? 我知道,当输入一个返回某个内容的方法时,必须对其进行定义,参数进一步定义该方法将要处理的内容,因此,我假设,当从另一个方法调用所述方法时,必须使用相同的参数,但情况似乎并非如此。