使用Mockito固执


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);。但是,验证固执版本仅调用一次的测试。

直截了当:模拟框架告诉您,该方法未在该模拟对象上调用。

只有两个说明:

  • 您是不是真正运行您在问题中显示的生产代码(您正在测试其他内容)
  • 您的设置有问题;而且您是不是"插入"模拟对象进行测试设置

相关内容

  • 没有找到相关文章

最新更新