2015-10-05 156 views
1

我有一個服務,我正在嘲笑使用Mockito。有什麼方法可以驗證傳遞給服務調用的參數嗎?有沒有辦法窺探傳遞給Mockito中的Mocked對象的參數

例如,

我有一個服務名爲employeeAnalyzer.calculateAnnualAppraisalForEmployee(Employee emp)

所以從單元測試,我想這樣做

verifyThat ("John", emp.getName()); 
verifyThat ("Doe", emp.getLastName); 

基本上我想窺視已發送給我注射使用該服務的參數

@InjectMocks 
EmployeeAnalyzer employeeAnalyzer; 

在此先感謝。

回答

5

肯定! Mockito真棒。您可以使用ArgumentCaptor來捕獲Employee參數,然後執行一些斷言。

(從以前的鏈接所採取的示例)

ArgumentCaptor<Person> argument = ArgumentCaptor.forClass(Person.class); 
verify(mock).doSomething(argument.capture()); 
assertEquals("John", argument.getValue().getName()); 

或者使用@Captor註釋

@Captor ArgumentCaptor<AsyncCallback<Foo>> captor; 

@Before 
public void init(){ 
    MockitoAnnotations.initMocks(this); 
} 

@Test public void shouldDoSomethingUseful() { 
    //... 
    verify(mock).doStuff(captor.capture()); 
    assertEquals("foo", captor.getValue()); 
} 
+1

這個新的時髦方式是某種天才框架。所以你是我的朋友。它解決了我的問題。非常感謝。 –

相關問題