无法在测试 class 中模拟 BeanPropertyRowMapper class
Unable to Mock BeanPropertyRowMapper class in test class
无法在测试中模拟 BeanPropertyRowMapper 数据 class。尝试了不同的场景。有人可以帮我解决这个问题吗?
它正在返回 null dtoResposne 对象,但它正在返回 dto 对象中的数据。当我们将 dto 与 dtoResponse 进行比较时,此处断言失败。
以下代码是相关的DaoImpl class
public Dto getViewData(String requestId, List<String> errorLsist) {
String sql = "SELECT * FROM table WHERE id = ?";
return (Dto) getJdbcTemplate().queryForObject(sql, new Object[] { requestId },
new BeanPropertyRowMapper(Dto.class));
}
Below code is related to test class
String sql = "SELECT * FROM dom.deployment WHERE request_id = ?";
List<Dto> data = new ArrayList<>();
Dto dto = new Dto();
dto.setDecisionFlowGuid(guid);
data.add(dto);
Mockito.when(jdbcTemplate.query(
"SELECT * FROM dom.deployment WHERE request_id = " + requestId,
new BeanPropertyRowMapper<>(Dto.class))).thenReturn(data);
Dto dtoResponse = deploymentDaoUtilImpl.getViewData(requestId, errors);
assertEquals(dto, dtoResponse);
Tried with below scenarios as well.
Mockito.when((Dto) jdbcTemplate.queryForObject(sql, new Object[] { requestId },
new BeanPropertyRowMapper<Dto>(Dto.class))).thenReturn(dto);
Mockito.when((Dto) jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Dto.class)))
.thenReturn(dto);
“jdbcTemplate”必须首先创建为 Mock(即 Mockito.mock),然后将 mock 作为调用者的依赖项注入。
然后你下面的 Mockito.when 需要包装你试图模拟的 object 并且函数在后面。在线复习 examples/docs 中的语法。
Mockito.when(jdbcTemplate.query(
"SELECT * FROM dom.deployment WHERE request_id = " + requestId,
new BeanPropertyRowMapper<>(Dto.class))).
问题已通过以下代码解决
BeanPropertyRowMapper mapper = new BeanPropertyRowMapper((Dto.class));
Mockito.when(jdbcTemplate.queryForObject(eq(sql), eq(new Object[] { requestId }), any(BeanPropertyRowMapper.class))).thenReturn(dto);
Dto dtoResponse = deploymentDaoUtilImpl.getViewData(requestId, errors);
assertEquals(dto, dtoResponse);
无法在测试中模拟 BeanPropertyRowMapper 数据 class。尝试了不同的场景。有人可以帮我解决这个问题吗?
它正在返回 null dtoResposne 对象,但它正在返回 dto 对象中的数据。当我们将 dto 与 dtoResponse 进行比较时,此处断言失败。
以下代码是相关的DaoImpl class
public Dto getViewData(String requestId, List<String> errorLsist) {
String sql = "SELECT * FROM table WHERE id = ?";
return (Dto) getJdbcTemplate().queryForObject(sql, new Object[] { requestId },
new BeanPropertyRowMapper(Dto.class));
}
Below code is related to test class
String sql = "SELECT * FROM dom.deployment WHERE request_id = ?";
List<Dto> data = new ArrayList<>();
Dto dto = new Dto();
dto.setDecisionFlowGuid(guid);
data.add(dto);
Mockito.when(jdbcTemplate.query(
"SELECT * FROM dom.deployment WHERE request_id = " + requestId,
new BeanPropertyRowMapper<>(Dto.class))).thenReturn(data);
Dto dtoResponse = deploymentDaoUtilImpl.getViewData(requestId, errors);
assertEquals(dto, dtoResponse);
Tried with below scenarios as well.
Mockito.when((Dto) jdbcTemplate.queryForObject(sql, new Object[] { requestId },
new BeanPropertyRowMapper<Dto>(Dto.class))).thenReturn(dto);
Mockito.when((Dto) jdbcTemplate.query(sql, new BeanPropertyRowMapper<>(Dto.class)))
.thenReturn(dto);
“jdbcTemplate”必须首先创建为 Mock(即 Mockito.mock),然后将 mock 作为调用者的依赖项注入。
然后你下面的 Mockito.when 需要包装你试图模拟的 object 并且函数在后面。在线复习 examples/docs 中的语法。
Mockito.when(jdbcTemplate.query(
"SELECT * FROM dom.deployment WHERE request_id = " + requestId,
new BeanPropertyRowMapper<>(Dto.class))).
问题已通过以下代码解决
BeanPropertyRowMapper mapper = new BeanPropertyRowMapper((Dto.class));
Mockito.when(jdbcTemplate.queryForObject(eq(sql), eq(new Object[] { requestId }), any(BeanPropertyRowMapper.class))).thenReturn(dto);
Dto dtoResponse = deploymentDaoUtilImpl.getViewData(requestId, errors);
assertEquals(dto, dtoResponse);