У меня есть частный метод в моем коде Java, который должен быть вызван дважды. Я пишу джунты, используя Powermock. При издевательстве над этим методом мне нужны два разных результата для двух разных вызовов.
// Я пробовал:
PowerMockito.doReturn("MyString1").doReturn("MyString2").when(spy,"getresult",Mockito.anyString());
// Но когда () не принимает ничего, кроме шпионского объекта.
PowerMockito.doReturn("MyString1").doReturn("MyString2").when(spy).getresult(Mockito.anyString());
// когда () не разрешает использовать метод getresult, так как этот метод getresult объявлен как private.
CODE
Class A{
String firstString="abc";
String secondString="def";
String result1=getresult(firstString);
String result2=getresult(secondString);
private String getresult(String arg1){
//My code here;
return "AnyString";
}
}
JUNIT
//Declarations
@InjectMocks
A a;
.......
@Test
public void ATest(){
....
/*Suppose I want "MyString1" and "MyString2" as result for calling the method "getresult" for result1 and result2 in Class A*/
A spy=PowerMockito.spy(a);
PowerMockito.doReturn("MyString1").when(spy,"getresult",Mockito.anyString());
....
}
// Please overlook the typos
Я получаю ошибку компиляции при использовании кода, который я пробовал.
Как написано в комментариях к коду, я ожидаю двух результатов «MyString1» и «MyString2» в двух последовательных вызовах методов, как показано в коде.
Заранее спасибо. Любой другой подход к достижению результатов приветствуется.