2011-08-17 2 views
2

나는 간단한 코드가 있습니다mockito를 사용하여 더미를 구현하는 방법은 무엇입니까?

private MoneyTransferServiceBean moneyTransferService; 
AccountService mockedAccountService = mock(AccountService.class); 
doReturn(true).when(mockedAccountService).verifyBalance("request"); 
MoneyTransfer moneyTransfer = moneyTransferService.new MoneyTransfer(transferRequest); 
moneyTransfer.verifySrcBalance(); 

을하지만이 적용되지 않습니다 :이 시도

임 임() accountService.verifyBalance 젖꼭지를 구현할 수 있도록하는 방법

public interface AccountService { 
    public boolean verifyBalance(AccountInfo account); 
} 


public class MoneyTransferServiceBean implements MoneyTransferService { 
    private AccountService accountService; 

    class MoneyTransfer { 
     private TransferRequest request; 
     public MoneyTransfer(TransferRequest request) { 
      this.request = request; 
     } 

     private void verifySrcBalance() throws TransferException { 
      if (!accountService.verifyBalance("request") 
       throw new TransferException("LOW_BALANCE_ERROR_MESSAGE"); 
     } 

    } 
} 

.

답변

2

일반적으로 doX() 메소드는 예외 스로우 및 void 메소드를 조롱하는 데 사용됩니다. 다른 사용법은 ([method_call]). thenX(); 먼저 모의 객체를 생성하고 세터 또는 화이트 박스 테스트 서비스로 모의를 넣어 :

MoneyTransferServiceBean moneyTransferService = new MoneyTransferServiceBean(); 
AccountService mockedAccountService = mock(AccountService.class); 
Whitebox.setInternalState(moneyTransferService , "accountService", mockedAccountService); 

당신은이 같은 모의와의 상호 작용을 조롱한다 :

when(mockedAccountService.verifyBalance(eq(accInfo)).thenReturn(true); 
verify(mockedAccountService).verifyBalance(accInfo); 
verifyNoMoreInteractions(mockedAccountService); 

모든 것을 설명 Mockito 사이트에 좋은 사례가있다 .

관련 문제