Mockito/PowerMockito每次都具有不同实例的循环中模拟静态方法



我有一种静态方法,我需要使用Mockito/PowerMockito

模拟该方法
Public static Person MyFactory.getPersonObject(Info info)

此方法用于循环中,对于每种Person,都会创建Info即时。

InfoPerson的数据成员。

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是否支持它?

谢谢

这应该起作用。

   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());

相关内容

  • 没有找到相关文章

最新更新