在 mockito 中是否可以根据 mock 是否实际用于被测单元来验证在 mock 上调用了一个方法?
举个简单的例子,我为我的被测单元提供了一个模拟工厂(FooFactory),当调用 Foo.create() 时,它返回一个模拟(Foo)以供单元下的某些方法使用测试。我如何验证 Foo.method() 仅在被测单元调用 Foo.create() 时才被调用?
我设想代码看起来像这样:
@Before
public void init() {
Foo mockFoo = mock(Foo.class);
when(fooFactory.create()).thenReturn(mockFoo);
test = new UnitUnderTest(fooFactory);
}
@Test
... may or may not create a foo ...
@After
public void cleanup() {
if (verify(fooFactory).create()) { // Here's the 'conditional verification'
Foo mockFoo = fooFactory.create();
verify(mockFoo).close();
}
}
举一个更具体的例子,我的工厂返回一个我想确保关闭的 Reader 对象,但并非类中的每个方法都实际构造了一个 Reader。我显然可以将验证添加到我知道需要 Reader 的每个测试中,但这似乎需要大量重复工作。