mockito-core:2.7.10
我正在使用Mockito测试以下方法
@Override
public void detachView() {
mMovieListViewContract = null;
mMovieModelContract.releaseResources();
}
我存根了具有无效返回值的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);
。但是,验证存根版本仅被调用一次的测试。 最佳答案
直截了当:模拟框架告诉您未在该模拟对象上调用此方法。
对此只有两种解释:
您并没有真正运行问题中显示的生产代码(正在测试其他内容)
您的设置有问题;并且您在执行测试设置时没有“插入”模拟对象