【发布时间】:2021-03-16 14:29:03
【问题描述】:
我试图在测试类中模拟 PreparedStatement 类。我是这个单元测试用例实现的新手。有人可以指导我如何验证这种情况。
下面的代码是表单服务实现类。
String sqlToUpdateDeploymentTable = UPDATE_DEPLOYMENT_BY_REQUEST_ID_FOR_APPROVE_AND_REJECT;
getJdbcTemplate().update(sqlToUpdateDeploymentTable, request.getApprover(), request.getApproverComment(),
request.isApproved() ? APPROVED : REJECTED, Timestamp.from(Instant.now()), request.getRequestId());
String sqlToUpdateDeploymentAprrovalTable = INSERT_RECORD_INTO_DEPLOYMENT_APPROVAL;
getJdbcTemplate().update(new PreparedStatementCreator() {
public PreparedStatement createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(sqlToUpdateDeploymentAprrovalTable);
ps.setString(1, request.getApprover());
ps.setString(2, request.getRequestId());
return ps;
}
});
if (request.isApproved()) {
return DEPLOYEMNET_REQUEST + AppConstants.REQ_PREFIX + request.getRequestId() + HAS_BEEN_APPROVED;
}
以下代码来自测试类。 @嘲笑 jdbcTemplate jdbcTemplate;
@Mock
Connection connection;
@Mock
PreparedStatementCreator statementcreator;
@Mock
PreparedStatement statement;
sql = "Some Sql query"
RequestDto requestDto = new RequestDto();
requestDto.setRequestId("123445");
String APPROVED = "approved";
String query = "UPDATE db.code SET approval_time="
+ Timestamp.from(Instant.now()) + " WHERE request_id=" + requestDto.getRequestId();
Mockito.when(jdbcTemplate.update(new PreparedStatementCreator() {
statement.createPreparedStatement(Connection connection) throws SQLException {
PreparedStatement ps = connection.prepareStatement(query);
ps.setString(2, requestDto.getRequestId());
return ps;
}
})).thenReturn(1);
Mockito.when(jdbcTemplate.update(query,Timestamp.from(Instant.now()), requestDto.getRequestId())).thenReturn(0);
//Mockito.when(PreparedStatement(statement).createPreparedStatement(connection)).thenReturn(statement);
String response = utilimpl.approverReject(requestDto, errors);
System.out.println(response);
在测试类中,我无法进入 PreparedStatementCreator 块。我在测试类中嘲笑了所有必需的类。我不确定我在哪里失踪。
【问题讨论】:
标签: java spring-boot unit-testing mocking mockito