mockito-core:2.7.10
我正在使用Mockito
测试以下方法@Override
public void detachView() {
mMovieListViewContract = null;
mMovieModelContract.releaseResources();
}
我正在固执,该方法具有空隙返回。和测试以确保仅调用一个固执版本。
@Override
public void releaseResources() {
if(mSubscription != null && !mSubscription.isUnsubscribed()) {
mSubscription.unsubscribe();
}
}
我写了以下测试:
@Test
public void shouldReleaseModelResourcesWhenDetached() {
doNothing().when(mockMovieListModelContract).releaseResources();
movieListPresenterContract.detachView();
verify(mockMovieListModelContract, times(1)).releaseResources();
}
我想验证mockMovieListModelContract.releaseResources()
的固执版本仅被调用一次。以下测试失败:
verify(mockMovieListModelContract, times(1)).releaseResources();
测试失败了:
Wanted but not invoked:
movieListModelContract.releaseResources();
Actually, there were zero interactions with this mock.
所以我更改为使用通过测试的verifyZeroInteractions(mockMovieListModelContract);
。但是,验证固执版本仅调用一次的测试。
直截了当:模拟框架告诉您,该方法未在该模拟对象上调用。
只有两个说明:
- 您是不是真正运行您在问题中显示的生产代码(您正在测试其他内容)
- 您的设置有问题;而且您是不是"插入"模拟对象进行测试设置