2013-11-07 4 views
0

코드 :Mockito 및 JUnit을

public class AccountService(){ 

private ObjectMapper mapper = new ObjectMapper(); 

public Account getAccount(){ 
    try { 

     ClientResponse response = RestUtility.getAccounts(); 

     if(CLientResponse.OK.Status == response.getClientResponseStatus()){ 
      return mapper.readValue(response.getEntity(String.class), Account.class) 
     } 

    } catch(Exception e){ 
     log.error(e.getMessage(), e); 
    } 

    return null; 
    } 
} 

가 어떻게이 서비스를 조롱 할 수 있습니까? RestUtility는 정적 유틸리티이며 mockito에 의해 조롱 될 수 없습니다. 내가 원하는 것은 '모의'계정 목록을 반환하는 나의 방법입니다. 이 아키텍처로도 가능합니까?

+0

사용 PowerMock https://code.google.com/p/powermock/wiki/MockitoUsage –

답변

1

모의 통계 방법을 사용하려면 PowerMock을 사용하십시오. RestUtility 클래스에 래퍼를 만들 수 있습니다. 이 래퍼에 대한 참조는 생성자에서 제공되어야합니다.

0

당신이

public class AccountService() { 
    protected ClientResponse getResponse() { return RestUtility.getAccounts(); } 

    public Account getAccount() { 
     try { 
      ClientResponse response = getResponse(); 
      ... 
     } 
} 

로 변경하는 경우가 Mockito 또는 다른 모의 프레임 워크를 사용하여 getResponse()을 조롱하는 것이 간단하다. 심지어 쉽게 :

public class AccountServiceTest { 
    class TestableAccountService extends AccountService { 
     @Override 
     protected ClientResponse getResponse() { return <yourmockresponsegoeshere>; } 
    } 

    @Test 
    public void testMe() { 
     AccountService ac = new TestableAccountService(); 
     assertThat(ac.getAccount.size() , equalTo(1)); 
     // etc 
     ... 
    } 

건배, 정적 메서드를 조롱하는 mockito와