测试一个在mockito中调用该对象的另一个方法的方法

时间:2013-05-06 14:01:38

标签: java unit-testing mockito

我有一个界面,例如:

interface MyService {
  void createObj(int id)
  void createObjects()
}

我想测试createObjects方法的实现,其方体如下:

void createObjects() {
  ...
  for (...) {
     createObj(someId);
  }
}

我已经测试了createObj(id)

@Test public void testCreate() {
  //given
  int id = 123;
  DAO mock = mock(DAO.class);
  MyService service = new MyServiceImpl(mock);

  //when
  service.createObj(id);

  //verify
  verify(mock).create(eq(id));
}

所以我不想在createObjects的测试中重复所有的测试用例。

除了我正在测试的那个之外,我怎样才能确保调用真实对象的另一个方法?

1 个答案:

答案 0 :(得分:7)

使用间谍:

MyService myService = new MyServiceImpl()
MyService spy = spy(myService);
doNothing().when(spy).createObj(anyInt());

// now call spy.createObjects() and verify that spy.createObj() has been called

与其他所有内容一样,在the api doc中进行了描述。