下面的简单测试用例失败,但有例外。
org.mockito.exceptions.misusing.InvalidUseOfMatchersException:
Invalid use of argument matchers! 3 matchers expected, 2 recorded:
我不确定有什么问题
@Test
public void testGetStringTest(){
final long testId = 1;
String dlrBAC = null;
NamedParameterJdbcTemplate jdbcTemplate = mock(NamedParameterJdbcTemplate.class);
when(this.dao.getNamedParameterJdbcTemplate()).thenReturn(jdbcTemplate);
when(jdbcTemplate.queryForObject(anyString(), any(SqlParameterSource.class), String.class
)).thenReturn("Test");
dlrBAC = dao.getStringTest(testId);
assertNotNull(dlrBAC);
}
答案 0 :(得分:35)
Mockito要求您在存根方法调用时仅使用原始值或仅使用匹配器。完整的例外(这里没有发布)肯定会解释一切。
简单改变这一行:
when(jdbcTemplate.queryForObject(anyString(), any(SqlParameterSource.class), String.class
)).thenReturn("Test");
到
when(jdbcTemplate.queryForObject(anyString(), any(SqlParameterSource.class), eq(String.class)
)).thenReturn("Test");
它应该有用。