java - 如何正确匹配 Mockito 中的可变参数

标签 java mocking variadic-functions mockito

我一直在尝试使用 Mockito 模拟具有可变参数参数的方法:

interface A {
  B b(int x, int y, C... c);
}

A a = mock(A.class);
B b = mock(B.class);

when(a.b(anyInt(), anyInt(), any(C[].class))).thenReturn(b);
assertEquals(b, a.b(1, 2));

这不起作用,但是如果我这样做:

when(a.b(anyInt(), anyInt())).thenReturn(b);
assertEquals(b, a.b(1, 2));

这可行,尽管我在 stub 方法时完全省略了可变参数参数。

有什么线索吗?

最佳答案

Mockito 1.8.1 引入 anyVararg() matcher :

when(a.b(anyInt(), anyInt(), Matchers.<String>anyVararg())).thenReturn(b);

另请参阅历史记录:https://code.google.com/archive/p/mockito/issues/62

编辑弃用后的新语法:

when(a.b(anyInt(), anyInt(), ArgumentMatchers.<String>any())).thenReturn(b);

关于java - 如何正确匹配 Mockito 中的可变参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2631596/

相关文章:

go - 在 golang 中存储和传递可变参数?

java - @Deprecated SerializationFeature.WRITE_EMPTY_JSON_ARRAYS 的替代品

java - 失败 - 在上下文路径/RxCircle 中部署了应用程序,但上下文无法启动

java - (5.4-beta-6) 未调用区域事件处理程序

delphi - 如何在不注册类类型的情况下使用 Spring 的 DI 容器模拟接口(interface)?

c# - 在 C# 中测试电子邮件是否从外部系统发送

java - 为什么 preparedStmt.setString(1 ,"text' xx"); 不起作用,因为它可能会搞乱查询(Java)?

reactjs - 如何模拟 Firebase Auth 方法? ( react ,测试库)

go - go 中是否有可能使用 "partially apply"可变参数函数?

c - stdarg.h 功能似乎错误地连接参数