Unit testing 模拟聚合类

Unit testing 模拟聚合类,unit-testing,testing,junit,mocking,mockito,Unit Testing,Testing,Junit,Mocking,Mockito,我们在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类型的变量(我认为这是一个聚合类)。我已将以下对象定义为模拟对象: private mockA = mo

我们在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类型的变量(我认为这是一个聚合类)。我已将以下对象定义为模拟对象:

private mockA = mock(A.class);
private mockA1 = mock(A1.class);   // Please help with syntax
private mockB = mock(B.class)


谢谢

模拟A1的语法与模拟A的语法没有什么不同。您只需要确保与A1的任何交互(例如,
mockA1.m2()
)都是模拟的,或者包含有效数据(如果A1不是模拟的话)

如果您在模拟A1,那么您的代码是正确的:

A mockA=mock(A.class);
A1模拟A1=模拟(A1.类);
when(moka.getInfo())。然后返回(6.4);
when(moka.getA1())。然后返回(mockA1);
when(mockA1.m2())。然后返回(“更多详细信息”);
如果A1不是模拟,则不需要像使用
when(mockA1.m2())时那样模拟其方法。然后返回(…)

A mockA=mock(A.class);
A1 realA1=新的A1();
when(moka.getInfo())。然后返回(6.4);
when(moka.getA1())。然后返回(realA1);

模拟A1的语法与模拟A的语法没有什么不同。您只需确保与A1的任何交互(例如
mockA1.m2()
)都是模拟的或包含有效数据(如果A1不是模拟的)

如果您在模拟A1,那么您的代码是正确的:

A mockA=mock(A.class);
A1模拟A1=模拟(A1.类);
when(moka.getInfo())。然后返回(6.4);
when(moka.getA1())。然后返回(mockA1);
when(mockA1.m2())。然后返回(“更多详细信息”);
如果A1不是模拟,则不需要像使用
when(mockA1.m2())时那样模拟其方法。然后返回(…)

A mockA=mock(A.class);
A1 realA1=新的A1();
when(moka.getInfo())。然后返回(6.4);
when(moka.getA1())。然后返回(realA1);
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));
 when(mockA.getA1().m2())).thenReturn("Something");