2017-07-25 116 views
-1

我的任務是弄清爲什麼這個JUnit測試失敗。我所發現的是,而不是返回一個ArrayList(如getDeligationsForLoggedInUser應該返回,它返回一個LinkedList的「用戶列表」。JUnit Mockito返回LinkedList而不是ArrayList

@SuppressWarnings("unchecked") 
@Test 
public void test_getDelegationsForLoggedInUser() 
{ 
    String userId="Abcd"; 
    List<String> expectedUserList= new ArrayList<String>(); 
    expectedUserList.add("efghi"); 
    expectedUserList.add("jklmn"); 
    expectedUserList.add("opqrs"); 

    when(namedParameterJdbcTemplate.queryForObject(anyString(),anyMap(), any(RowMapper.class))).thenReturn(expectedUserList); 
    List<String> userList= workflowProcessDAOImpl.getDelegationsForLoggedInUser(userId); 
    verify(namedParameterJdbcTemplate, times(1)).query(sqlCaptor.capture(), namedParameterMap.capture(), rowMapperCaptor.capture()); 
    assertThat(userList, is(expectedUserList)); 
    assertThat(sqlCaptor.getValue(), is(SQLConstantsSysConfigV1.getInstance().GET_USERIDS_FOR_DELEGATES)); 

} 

沒有人有任何想法,爲什麼是這樣?

+0

你能否提供jUnit失敗日誌?我們需要知道你在哪條線路上以及由於什麼原因未能通過測試.. –

回答

0

您在本次測試嘲笑方法queryForObject,但測試的方法query

我假設你的代碼定義函數somwhere別人的嘲笑,是不是?那麼它可能僅僅是副本的結果/粘貼操作...

+0

謝謝....我會檢查出這個想法。 –

+0

:(我把它改成了queryForObject ....並且它仍然傳遞鏈表。返回。 但是這裏可能會有更大的變化。驗證語句中的錯誤返回: 通緝但未調用: namedParameterJdbcTemplate .queryForObject( ); 我認爲上面的代碼確實有捕獲參數。 –

相關問題