Mokito.when(jdbcTemplate.query(sql, new ParticipantMapper())).thenReturn(participantExistingList);
我正在使用上述代码行来模拟jdbcTemplate,但无法正常工作。有人可以帮忙模拟jdbcTemplate吗?
答案 0 :(得分:1)
尝试这样做:
在测试课上使用:
@Mock
JdbcTemplate jdbcTemplate;
然后尝试:
Mokito.when(jdbcTemplate.query(sql, new ParticipantMapper())).thenReturn(participantExistingList);
如果仍然失败,请尝试:
doReturn(participantExistingList).when(jdbcTemplate).query(sql, new ParticipantMapper());
希望这会有所帮助
答案 1 :(得分:1)
请务必在query()方法中查看参数的顺序。
就我而言,我想模拟以下行:
List<String> someList = jdbcTemplate.query(SQL_STRING,new Object[] { Id }, new MyCustomMapper());
所以我用以下方式来模拟它,注意传递的参数顺序
when(jdbcTemplate.query(any(String.class),(Object[]) anyVararg(),any(MyCustomMapper.class))).thenReturn(myList);
答案 2 :(得分:0)
尝试对所有参数使用ArgumentMatchers,如下所示:
Mokito.when(jdbcTemplate.query(any(String.class), any(ParticipantMapper.class)).thenReturn(participantExistingList);
根据您希望专注于互动的方式,您可以使用例如eq()为您的sql字符串。有关JavaDoc,请参见here。