首页 > 解决方案 > 使用 mockito 在测试类中模拟新实例的创建

问题描述

我试图在我正在测试的类中模拟一个对象的新实例,但我正在努力寻找一种使用 Mockito 来做到这一点的方法。

如果我理解正确,这可能是可以使用 Powermock 实现的,但我只能使用 Mockito。

这就是我想要做的

   private class MyTestClass{
      private doSomethingMethod(){
        Object obj = new Object();
        obj.getSomething;
      }
   }

我目前正在监视 MyTest 类,并想模拟新的 Object 以便我可以操纵 obj.getSomething() 的结果

这是使用 Mockito 可以实现的吗?谢谢

标签: javainitializationmockitospy

解决方案


恕我直言,正如您已经说过的,在您的情况下,一切都比使用 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();
        }
    }
}

推荐阅读