有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java如何模拟方法中初始化的对象

我有两个obj,obj1和obj2,obj2是obj1中的属性

public class MyObject1
{
    MyObject2 myObject2;

    public MyObject2 getMyObject2()
    {
        return myObject2;
    }

    public void setMyObject2(MyObject2 myObject2)
    {
        this.myObject2 = myObject2;
    }
}

在我的服务中,它被初始化为obj1,并将obj2作为

public void myTest2(){
        MyObject1 myObject1 = new MyObject1();
        MyObject2 myObject2 = myObject1.getMyObject2();
}

在我的测试中,我模拟了obj2,我想在什么时候(obj1.getObj2)。然后返回(obj2),这个obj2是模拟对象,如下所示

public void test3(){
        MyObject2 myObject2 = mock(MyObject2.class);
        MyObject1 myObject1 = spy(new MyObject1());
        doReturn(myObject2).when(myObject1).getMyObject2();
        myService.myTest2();
} 

但现在我从测试中得到的myObject2是空的,而不是模拟的myObject2。如何在测试中模拟myObject2


共 (2) 个答案

  1. # 1 楼答案

    因为我们不能在没有反射的情况下使用mockito来模拟局部变量,所以这个问题目前是死路一条

  2. # 2 楼答案

    如果您使用的是Mockito,那么您可以使用 莫基托。任何()方法,都可以将类类型作为参数传递