我们在类C中具有以下方法:
public static void m(a A, b B)
{
......
A1 a1=new a.getA1; //Not sure about the syntax
Double d1= a.getInfo;
.....
if (d1>5.0)
{
b.add(d1,a1)
}
}
A是另一类。在A内部,我们有一个声明为A1类类型的变量(我认为这使A成为聚合类)。我已将以下对象定义为模拟对象:
private mockA = mock(A.class);
private mockA1 = mock(A1.class); // Please help with syntax
private mockB = mock(B.class)
也
when(mockA.getInfo()).thenReturn(6.4);
when(mockA.getA1()).thenReturn(mockA1); //Please help with syntax
when(mockA1.m2()).thenReturn("Some More Details"); // Please help with syntax
m(mockA, mockB);
// In case > 5.0
verify(mockB,times(1)).add(6.4,mockB);
//in case < 5.0
verify(mockB,times(0)).add(anyDouble,any(B.class));
请问模拟A1对象并在when / verify中使用它的语法是否正确?
另一个问题是是否不需要为a1创建模拟,应使用哪种语法?例如,可以吗?
when(mockA.getA1().m2())).thenReturn("Something");
谢谢
答案 0 :(得分:0)
模拟A1的语法与模拟A的语法没有什么不同。您只需要确保与A1的任何交互(例如mockA1.m2()
)都被模拟或包含有效数据(如果A1不是模拟的话) )。
如果您要嘲笑A1,那么您的代码是正确的:
A mockA = mock(A.class);
A1 mockA1 = mock(A1.class);
when(mockA.getInfo()).thenReturn(6.4);
when(mockA.getA1()).thenReturn(mockA1);
when(mockA1.m2()).thenReturn("Some More Details");
如果A1不是模拟的,那么您不需要像上面的when(mockA1.m2()).thenReturn(...)
那样模拟其方法:
A mockA = mock(A.class);
A1 realA1 = new A1();
when(mockA.getInfo()).thenReturn(6.4);
when(mockA.getA1()).thenReturn(realA1);