我有一个接口,例如:
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
的测试中重复它的所有测试用例。
我如何确保除了我正在测试的方法之外,还调用了真实对象的另一个方法?
使用间谍:
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