@InjectMocks
对于包含 JDBC 调用的类。
@Mock
JDBC 模板
@Mock私有数据访问异常数据访问异常;
工作正常:
when(jdbcTemplate.update(anyString(), anyString(), anyString(), anyString())).thenThrow(dataAccessException);
不起作用:
when(jdbcTemplate.update("revoke", "1", "1", "JA122")).thenThrow(dataAccessException);
我是测试和Mockito的新手。谁能解释为什么会有这种行为?
假设你正在模拟一个 Spring JDBC JdbcTemplate
,update
方法接收一个 vararg,你用四个字符串调用它。在第二个示例中,您的第二个和第三个参数int
文本,因此参数不匹配,因此您的执行与模拟的期望不匹配。只需将它们转换为字符串文字,您应该没问题:
when(jdbcTemplate.update("revoke", "1", "1", "JA122")).
thenThrow(dataAccessException);`