如何模拟在方法中初始化的对象
How to mock object initialized in method
我有两个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,我想要when(obj1.getObj2).thenReturn(obj2),这个obj2就是模拟对象,as
public void test3(){
MyObject2 myObject2 = mock(MyObject2.class);
MyObject1 myObject1 = spy(new MyObject1());
doReturn(myObject2).when(myObject1).getMyObject2();
myService.myTest2();
}
但是现在我从测试中得到的 myObject2 是空的,而不是模拟的 myObject2。如何在我的测试中模拟 myObject2?
因为我们不能在没有反射的情况下使用 mockito 来模拟局部变量,所以这个问题现在是死路一条
如果你正在使用 Mockito 那么你可以使用
Mockito.any() 方法,你可以将类类型作为参数传递。
我有两个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,我想要when(obj1.getObj2).thenReturn(obj2),这个obj2就是模拟对象,as
public void test3(){
MyObject2 myObject2 = mock(MyObject2.class);
MyObject1 myObject1 = spy(new MyObject1());
doReturn(myObject2).when(myObject1).getMyObject2();
myService.myTest2();
}
但是现在我从测试中得到的 myObject2 是空的,而不是模拟的 myObject2。如何在我的测试中模拟 myObject2?
因为我们不能在没有反射的情况下使用 mockito 来模拟局部变量,所以这个问题现在是死路一条
如果你正在使用 Mockito 那么你可以使用 Mockito.any() 方法,你可以将类类型作为参数传递。