Mockito / PowerMock - 可以模拟新的MyClass()?

问题描述 投票:1回答:1
public void doSomething(){
    //...
    HibernateCursorItemReader<Object[]> reader = new HibernateCursorItemReader<>();
    //...
}

如何模拟读者,或使新的HibernateCursorItemReader<>()返回一个模拟对象?

java mockito powermock
1个回答
1
投票

你可以用一个方法包装new HibernateCursorItemReader<>();而不是模拟它,例如:

 HibernateCursorItemReader<Object[]> getReader() {
      return new HibernateCursorItemReader<>();
 }

 public void doSomething(){
     //...
     HibernateCursorItemReader<Object[]> reader = getReader(); // use method invocation to get a reader
     //...
 }

现在,当你想模拟reader时,请改为模拟getReader()方法并返回你想要的任何内容:

MyObject object = ...; //your original object

MyObject spyObject = Mockito.spy(object);
Mockito.doReturn(/*your value*/).when(spyObject).getReader();
© www.soinside.com 2019 - 2024. All rights reserved.