필자는 구현 한 메소드에 대한 테스트 케이스를 작성하려고하는데,이 메소드는 타사 캐시 제공자를 사용합니다. 내가 직면 한 문제는 캐시가 비동기 적이므로 캐시에 넣은 요소가 캐시에 즉시 들어 있지 않기 때문에 테스트하기가 매우 어렵다는 점입니다.다른 void 메소드를 실행하는 모의 객체
내 솔루션은 PowerMockito를 사용하여 캐시를 조롱하는 것입니다. 항상 동일한 객체를 반환하도록 설정할 수 있지만 객체를 넣을 때 HashMap
에 객체를 넣고 get 작업에서 동일한 맵에서 가져 오도록하는 것이 바람직합니다. 같은 가져 오기 작업이 매우 간단해야 , 뭔가 : 당신이 이외의 다른 공간 기능을 조롱 할 수없는 것처럼
final Map<String, Object> cacheMap = new HashMap<>();
Answer<Object> getFunction = invocation ->
cacheMap.get(invocation.getArgument(0));
when(mockCache.get(any())).thenAnswer(getFunction);
하지만 보이드 방법에 대한 비슷한 전화를 조롱하는 방법을 잘 모르겠습니다은 mockCache.put(any(), any())
그것은이어야 보인다 진짜 방법을 호출하거나 아무것도하지 말라.