Mockito在使用时有限制Mockito.when(someMethod(...))
你不能通过结合任何()
和文字值someMethod()
它抱怨我们必须选一个。 因此,以下内容是非法的:
解决方案1(首选,如Stephen所示):
Mockito.when(context.configFileProvider(eq(“ file1”),any()))。thenReturn(“ file1_contents”)
解决方案2(可行但很丑,这里的原始帖子):
Mockito.when(context.configFileProvider("file1", any())).thenReturn("file1_contents")
在为詹金斯编写Groovy脚本时尝试测试嵌套闭包时,我偶然发现了一种解决方法(不要问我)。 这里是:
Mockito.when(context.configFileProvider(Mockito.any(), Mockito.any())).thenAnswer(
new Answer<String>(){
@Override
String answer(InvocationOnMock invocation){
List arg1 = invocation.getArgument(0)
switch (arg1.get(0)) {
case "file1": return "file1_contents"
}
}
}
);
从逻辑上讲,这与前面的语句等效。