java - 如何在方法中传递和模拟对象的 var args
问题描述
这是类的方法,为此,我想用 mockito 编写单元测试用例
@Repository
public class EmployeeDaoImpl implements EmployeeDao {
@Autowired
DataSource dataSource;
// private static Logger log = Logger.getLogger(UserDaoImpl.class);
public void insertData(Employee emp) {
String sql = "INSERT INTO Emp"
+ "(first_name,last_name, gender, city) VALUES (?, ?, ?,?)";
JdbcTemplate jdbcTemplate = new JdbcTemplate(dataSource);
jdbcTemplate.update(
sql,
new Object[] { emp.getFirstName(), emp.getLastName(),
emp.getGender(), emp.getCity() });
}
|
下面我写了我的测试用例方法:
@Test
public void insertDataTest() {
Employee emp= new Employee();
emp.setUserId(1);
emp.setFirstName("Somya");
emp.setLastName("Kumari");
emp.setGender("female");
emp.setCity("Bangalore");
jdbcTemplate = new JdbcTemplate(dataSource);
int var = 0;
Mockito.when(jdbcTemplate.update(Mockito.anyString(),
Mockito.anyVararg())).thenReturn(var);
empDao.insertData(emp);
withSuccess();
}
这是我得到的错误,请帮助我。
解决方案
你必须在你的when
调用中转换参数。否则参数将不明确,编译器无法将其解析为特定update
方法。
所以:
Mockito.when(jdbcTemplate.update((String)Mockito.anyString(), (Object[])Mockito.anyVararg())).thenReturn(var);
应该可以解决您的问题。至少它对我有用。
推荐阅读
- java - 通过 SSHJ 转移到超级用户不起作用
- kubernetes - GKE:带有子域的ingres
- linux - WSL 需要扩展 .exe!如何编写通用脚本?(WSL、Cygwin、Linux、MacOS)
- postgresql - 如何在 PostgreSQL 的关联字段中查找重复项?
- python - 如何删除包含重复第一个元素的二维列表中的那些一维列表?
- php - 如何从 php 中列出的数组中获取 xml 输出?
- python - 如何制作 discord.py 嵌入?
- google-chrome - $window.opener 在 Chrome 中的子选项卡中为 null
- hadoop - 为什么 yarn cli 没有列出任何容器?
- java - JMeter 拆解问题