2017-11-24 27 views
3

나는 스프링 기반 프로젝트를하고 난 코드 커버리지를 개선하기 위해 노력하고 내 그것을 Mockito 및 DEFFERED 결과

i를 defferedResult onCompletion 방법에 람다를 사용하는 코드의 다음 블록을

 util.getResponse(userInfoDeferredResult, url, userName, password); 

    userInfoDeferredResult.onCompletion(() -> { 
     //the result can be a String or ErrorResponse 
     //if ErrorResponse we don't want to cause ClassCastException and we don't need to cache the result 
     if (userInfoDeferredResult.getResult() instanceof String){ 

      String response = (String) userInfoDeferredResult.getResult(); 

      cacheServices.addValueToCache(Service.USER_INFO_CACHE_NAME, corpId, response);    
     } 
    }); 

나는 mockito 또는 powerMockito를 사용하여 onCompletion 람다의 내용을 조롱하는 것이 가능한지 궁금합니다. 새로운 방법에

+0

테스트 할 부분은 무엇입니까? 람다가 이미 코드에 있습니다. 람다 만 조롱하는 것은 불가능합니다. –

+0

람다의 내부를 테스트하고 싶지만 가능하지 않은 것 같습니다 – Damien

답변

6

추출 내용 :

if(userInfoDeferredResult.getResult() instanceof String) { 
    String response = (String) userInfoDeferredResult.getResult(); 
    cacheServices.addValueToCache(Service.USER_INFO_CACHE_NAME, corpId, response);    
} 

이 그런 방법 방법을 테스트?

+0

그래, 그렇게 할 필요가 없길 바랐다. 친숙한 lambda 솔루션을 얻고 싶습니다만, 대안이 없다면 이것은 좋은 접근 방법입니다. – Damien

4

귀하의 테스트해야 오히려 모의 cacheServices, 그리고 람다을 실행

또한, 다음과 같은 링크에 대한 기사를 찾을 수 있습니다.