1
mockito-core:2.7.10
をスタブにしmockitoを使用して、私はボイド復帰を持つreleaseResourcesメソッドをスタブしていますmockitovoidメソッド
@Override
public void detachView() {
mMovieListViewContract = null;
mMovieModelContract.releaseResources();
}
を使用して、以下の方法をテストしています。そしてスタブされたバージョンが確実に一度だけ呼び出されるようにするためのテスト。
@Test
public void shouldReleaseModelResourcesWhenDetached() {
doNothing().when(mockMovieListModelContract).releaseResources();
movieListPresenterContract.detachView();
verify(mockMovieListModelContract, times(1)).releaseResources();
}
私はmockMovieListModelContract.releaseResources()
のスタブバージョンが一度だけ呼び出されることを確認したい:
@Override
public void releaseResources() {
if(mSubscription != null && !mSubscription.isUnsubscribed()) {
mSubscription.unsubscribe();
}
}
私は次のテストを書かれています。 以下は、テストに失敗しました:
verify(mockMovieListModelContract, times(1)).releaseResources();
テストが失敗しました:だから私は、テストに合格したverifyZeroInteractions(mockMovieListModelContract);
を使用するように変更し
Wanted but not invoked:
movieListModelContract.releaseResources();
Actually, there were zero interactions with this mock.
。ただし、スタブされたバージョンが1回だけ呼び出されることを確認するテスト。
完全なテスト方法を表示できますか?モック、前とスパイの注釈の使用が私にとって最も興味深いものです –
ここに示されているコードはよさそうです。初期化の問題でしょうか?すなわち、 'mockMovieListModelContract'は' movieListPresenterContract'インスタンスに挿入されません。 – Brice
ありがとうございました。私はMovieListModelContractをMovieListPresenterImpのコンストラクタに挿入していなかったと思います。私はDagger2依存性注入を使用していて、これを追加するのを忘れていました。 – ant2009