使用 mockito 在测试 class 中模拟新实例创建
Mocking new instance creation inside testing class using mockito
我正在尝试在我正在测试的 class 中模拟一个对象的新实例,但我正在努力寻找使用 Mockito 执行此操作的方法。
如果我理解正确的话,这可能是可以使用 Powermock 实现的,但我只有 Mockito 可供我使用。
这是我正在尝试做的事情
private class MyTestClass{
private doSomethingMethod(){
Object obj = new Object();
obj.getSomething;
}
}
我目前正在监视 MyTest class 并想模拟新对象以便我可以操纵 obj.getSomething()
的结果
这可以使用 Mockito 实现吗?
谢谢
恕我直言,正如您已经说过的那样,在您的情况下一切都比使用 Powermock 更好。
在类似的情况下,我使用的解决方案将 "unmockable" 代码放在尽可能小的方法中,并且 @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();
}
}
}
我正在尝试在我正在测试的 class 中模拟一个对象的新实例,但我正在努力寻找使用 Mockito 执行此操作的方法。
如果我理解正确的话,这可能是可以使用 Powermock 实现的,但我只有 Mockito 可供我使用。
这是我正在尝试做的事情
private class MyTestClass{
private doSomethingMethod(){
Object obj = new Object();
obj.getSomething;
}
}
我目前正在监视 MyTest class 并想模拟新对象以便我可以操纵 obj.getSomething()
的结果这可以使用 Mockito 实现吗? 谢谢
恕我直言,正如您已经说过的那样,在您的情况下一切都比使用 Powermock 更好。
在类似的情况下,我使用的解决方案将 "unmockable" 代码放在尽可能小的方法中,并且 @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();
}
}
}