我有一个如下定义的功能 -
public void doesSomething()
{
boolean someAsssertion;
if(callsMethodinAnotherClass(parameter1))
{
do something
}
else if(callsMethodinAnotherClass(parameter2))
{
do something
}
}
我想编写一个模拟“callsMethodinAnotherClass(..)”的测试用例;首先使用parameter1,然后使用parameter2,以测试两个块中的代码。如果我设置一次值(比如参数1),我不知道如何在它到达其他部分之前将其反转
答案 0 :(得分:0)
假设参数类型为String。你可以这样做
final ArgumentCaptor<String> argumentCaptor = ArgumentCaptor.forClass(String.class);
doAnswer(invocation -> {
String value = argumentCaptor.getValue();
if(value.equals("parameter1")
return something;
if(value.equals("parameter2")
return somethingElse;
}).when(mockedObject).callsMethodinAnotherClass(argumentCaptor.capture());