Mockito在使用anystring()时会产生罚款,而在使用@setup方法

时间:2016-01-13 05:11:28

标签: java junit mocking mockito

@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的新手。任何人都能解释为什么会出现这种情况吗?

1 个答案:

答案 0 :(得分:1)

假设您正在模拟Spring JDBC JdbcTemplateupdate方法会收到一个vararg,您使用四个字符串调用它。在第二个示例中,您的第二个和第三个参数是int个文字,因此参数不匹配,因此您的执行与模拟的期望不匹配。只需将它们转换为字符串文字就可以了:

when(jdbcTemplate.update("revoke", "1", "1", "JA122")).
    thenThrow(dataAccessException);`