2017-10-19 4 views
0

私が実装したメソッドのテストケースを記述しようとしていますが、これはサードパーティのキャッシュプロバイダを使用します。 私が直面している問題は、キャッシュが非同期であり、キャッシュに置かれた要素がキャッシュ内に即座に存在しないため、テストすることが非常に難しいことです。異なるボイドメソッドを実行するためのモックオブジェクト

私の解決策は、PowerMockitoを使用してキャッシュをモックすることでした。 常に同じオブジェクトを返すようにすることができますが、オブジェクトをputの上にHashMapに入れ、取得操作で同じマップから取得することをお勧めします。 get操作は、何か非常にシンプルでなければなりません:

final Map<String, Object> cacheMap = new HashMap<>(); 
    Answer<Object> getFunction = invocation -> 
      cacheMap.get(invocation.getArgument(0)); 
    when(mockCache.get(any())).thenAnswer(getFunction); 

しかし、私はあなたが以外に、ボイドの機能を模擬することができないかのように、少なくともはそうvoidメソッドmockCache.put(any(), any()) について同様の呼び出しを模擬する方法がわかりません実際の方法を呼び出すか、何もしない。

答えて

1

私はあなたが元の呼び出しを傍受し、それを別の実装に再ルーティングすることを探していると思います。説明するにはthis答えをご覧ください。

関連する問題