@InjectMocks
表示包含jdbc调用的类。
@Mock
jdbc模板
@Mock private DataAccessException dataAccessException;
工作正常:
when(jdbcTemplate.update(anyString(), anyString(), anyString(), anyString())).thenThrow(dataAccessException);
不起作用:
when(jdbcTemplate.update("revoke", "1", "1", "JA122")).thenThrow(dataAccessException);
我是测试和Mockito的新手。任何人都能解释为什么会出现这种情况吗?
答案 0 :(得分:1)
假设您正在模拟Spring JDBC JdbcTemplate
,update
方法会收到一个vararg,您使用四个字符串调用它。在第二个示例中,您的第二个和第三个参数是int
个文字,因此参数不匹配,因此您的执行与模拟的期望不匹配。只需将它们转换为字符串文字就可以了:
when(jdbcTemplate.update("revoke", "1", "1", "JA122")).
thenThrow(dataAccessException);`