我有一个静态方法,我需要使用Mockito / PowerMockito进行模拟
Public static Person MyFactory.getPersonObject(Info info)
此方法正在循环中使用,并且每个Person
创建一个Info
即时。
Info
是Person
的数据成员。
For(int i = 0; i< SIZE; i++) {
Info info = getTheInfo(i);
Person person = MyFactory.getPersonObject(info);
………
………
}
我的问题是如何每次都使用Info
实例。
我无法在模仿中使用getTheInfo(int)
。
这是我到目前为止所得到的:
PowerMockito.mockStatic(MyFactory.class);
PowerMockito.when(MyFactory.getPersonObject (Mockito.any(Info.class)).thenReturn( /*Person with its info instance*/);
Mockito.any(Info.class)
应该在运行时用正确的Info
实例替换,所以可能我没有使用正确的方法。
Mockito / PowerMockito是否支持它?
由于
答案 0 :(得分:0)
这应该有效。
ArgumentCaptor<Info> argumentCaptor = ArgumentCaptor.forClass(Info.class);
doAnswer(invocation-> {
Info info = argumentCaptor.getValue();
/* check for some property of info and based on that return different instances of person object*/
if(...) {
return person1
}
else if (....) {
return person2
}
....
}).when(MyFactory).getPersonObject(argumentCaptor.capture());