当我使用 Mockito 编写单元测试时,我经常会发现我在一个注入的模拟对象上调用了一个 getter,然后从返回的对象中调用一个方法。
到目前为止,我已经做了这样的事情:
@Mock
private Randomizer r;
@Mock
private Random random;
@InjectMocks
private NodeGenerator ng = new NodeGenerator();
@Test
public void nodeIsDuplicate() {
when(r.getRandom()).thenReturn(random);
when(random.nextInt(2)).thenReturn(1);
[...]
}
但是,不得不模拟随机性并为它设置第二个时间似乎是一种浪费。有没有办法让我的 when 语句更像:
when(r.getRandom().nextInt(2)).thenReturn(1);
无需模拟随机数,所以我可以只用我的 Randomizer 模拟在一条线上完成所有操作?