如何让 Mockito 在使用未定义的参数调用 mock 时引发异常?
是否可以在使用非预定义参数调用 mock 时引发异常?有,但这不是我真正需要的,因为如果它是合法的返回值,它就不起作用,这不会导致,而是导致以后的错误。Answers.RETURNS_SMART_NULLS
null
NullPointerException
编辑:一些背景。因此,在 Mockito 中,当您定义模拟时,您可以为每个调用指定返回值,如下所示:
when(myMock.someMethod(arg1, arg2)).thenReturn(returnValue);
当使用参数调用时,我没有在测试中给出返回值,它只是返回。我想将其配置为立即崩溃,并告诉我忘记为某些参数组合定义返回值。myMock.someMethod
null
编辑2:有人建议提供一个自定义,该自定义在调用时会引发异常。不幸的是,这不起作用。即使存在模拟,也会调用默认答案的方法。下面是一个示例:defaultAnswer
answer()
public class Test {
public static class Adder {
public int add(int a, int b) {
return a + b;
}
}
public static final Answer<Object> THROW_ON_UNDEFINED_ARGS = new Answer<Object>() {
@Override
public Object answer(InvocationOnMock invocation) throws Throwable {
throw new IllegalArgumentException(
String.format("Calling a mock with undefined arguments: %s %s",
invocation.getMethod(),
Arrays.toString(invocation.getArguments())));
}
};
public static void main(String[] args) {
Adder adderMock = mock(Adder.class, THROW_ON_UNDEFINED_ARGS);
when(adderMock.add(2, 3)).thenReturn(5);
System.out.println(adderMock.add(2, 3));
}
}
即使定义了异常,也会引发异常。adderMock.add(2, 3)