2017-10-19 2 views
0

필자는 구현 한 메소드에 대한 테스트 케이스를 작성하려고하는데,이 메소드는 타사 캐시 제공자를 사용합니다. 내가 직면 한 문제는 캐시가 비동기 적이므로 캐시에 넣은 요소가 캐시에 즉시 들어 있지 않기 때문에 테스트하기가 매우 어렵다는 점입니다.다른 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()) 그것은이어야 보인다 진짜 방법을 호출하거나 아무것도하지 말라.

답변

1

나는 당신이 원래의 호출을 가로 채고 그것을 다른 구현으로 재경로하는 것을 찾고 있다고 생각한다. 설명을 위해 this 답변을 살펴보십시오.

관련 문제