4

私はインターフェースを持っています、例:

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

テストしているメソッド以外に、実際のオブジェクトの別のメソッドが呼び出されたことを確認するにはどうすればよいですか?

4

1 に答える 1

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

これは、他のすべてと同様に、 api docで説明されています。

于 2013-05-06T14:07:53.350 に答える