如何使用Mockito正确模拟varargs

时间:2015-02-26 13:12:43

标签: java mocking mockito variadic-functions

我有这种方法,“实例”是@Mock

instance.lookup(
    SomeClass.class.getField("field").getAnnotation(MyAnnotation.class),
    Annotation... annotations
)

该方法的签名就是这样:

Object lookup(MyAnnotation resource, Annotation... annotations);

现在,Annotation ...值在运行时在我测试的代码中放在那个模拟上。

当我这么做的时候,我正试图模仿它

Mockito.when(instance.lookup....).thenReturn(something);

但是查找方法总是返回null值并抛出异常(它基本上不返回“something”但是null)

我在想我必须嘲笑这些varargs所以我将其修改为

Mockito.when(instance.lookup(_instance line_, Mockito.any(Annotation[].class)))

但它没有告诉我我正在使用它“原始”。

当我像这样使用anyVarargs()时

Mockito.when(instance.lookup(_that line_, Mockito.anyVararg()))

Mockito.anyVararg()返回Object,但我需要Annotation []

这里有任何提示吗?

非常感谢!

0 个答案:

没有答案