我正在尝试模拟我正在测试的类中的对象的新实例,但我正在努力寻找一种使用 Mockito 来执行此操作的方法。
如果我理解正确的话,这可能可以使用 Powermock 来实现,但我只能使用 Mockito。
这就是我想做的
private class MyTestClass{
private doSomethingMethod(){
Object obj = new Object();
obj.getSomething;
}
}
我目前正在监视 MyTest 类,并希望模拟新对象,以便我可以操纵 obj.getSomething() 的结果
使用 Mockito 可以实现这一目标吗? 谢谢
最佳答案
恕我直言,正如您已经说过的,您的情况比使用 Powermock 更好。
在类似的情况下,我使用的解决方案将“不可模拟”的代码放入尽可能小的方法中,并使用 @Spy
来实现,如下所示:
public class SpyTest {
@Spy
private MyTestClass myTestClass;
@Before
public void initMocks() {
MockitoAnnotations.initMocks(this);
}
@Test
public void spyInsteadOfPowermock() {
when(myTestClass.getObject()).thenReturn(Integer.valueOf(3));
assertThat(myTestClass.doSomethingMethod()).isEqualTo("3");
}
class MyTestClass{
public String doSomethingMethod(){
return getObject().toString();
}
Object getObject() {
return new Object();
}
}
}
关于java - 使用mockito在测试类中模拟新实例的创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55329877/