JUnit Mockito返回LinkedList而不是ArrayList



我的任务是找出为什么这个JUnit测试失败了。 我发现它不是返回一个ArrayList(就像getDeligationsForLoggedInUser应该返回的那样,而是返回一个"userList"的LinkedList(。

@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));
}

有谁知道为什么会这样?

你在这个测试中模拟方法queryForObject,但在方法上测试query

我想你的代码在其他地方定义了函数的模拟,不是吗?然后它可能只是复制/粘贴操作的结果......

我也有同样的问题。为了解决这个问题,我替换了 Mockito.anyList(((如果需要参数是列表(和Mockito.anyLong(((如果需要参数很长(。例:-

Mockito.when(testService.getData(Mockito.anyLong(),
Mockito.anyList(), Mockito.anyList())).thenReturn(SOME_RESPONSE_DATA);

相关内容

  • 没有找到相关文章

最新更新