英文:
JUnit5 Testing JDBC function
问题
我有以下的JDBC函数,用于更新数据库以添加新用户:
public class UserDaoImpl implements UserDao {
@Autowired
PasswordEncoder passwordEncoder;
@Autowired
DataSource datasource;
@Autowired
JdbcTemplate jdbcTemplate;
public int register(User user) {
String uniqueusername = "select * from users where username='" + user.getUsername() + "'";
List<User> users = jdbcTemplate.query(uniqueusername, new UserMapper());
if(users.size() == 0) {
String encryptedPassword = passwordEncoder.encode(user.getPassword());
String sql = "insert into users values(?,?,?,?,?,?)";
return jdbcTemplate.update(sql, new Object[] {
user.getUsername(),
encryptedPassword,
user.getFirstname(),
user.getLastname(),
user.getEmail(),
user.getAddress() });
} else {
return 0;
}
}
}
我正在尝试使用 JUnit5 和 Mockito 测试这个函数,但是我不太确定应该如何实现。我有以下内容:
@Mock
JdbcTemplate jdbcTemplate;
@Test
public void testRegister() {
UserDaoImpl userdaoimpl = new UserDaoImpl();
ReflectionTestUtils.setField(userdaoimpl, "jdbcTemplate", jdbcTemplate);
Mockito.when(...);
assertEquals(...);
}
在 Mockito.when()
和 assertEquals()
中我需要包含什么内容?
英文:
I have the following JDBC function which updates the database to add a new user
public class UserDaoImpl implements UserDao {
@Autowired
PasswordEncoder passwordEncoder;
@Autowired
DataSource datasource;
@Autowired
JdbcTemplate jdbcTemplate;
public int register(User user) {
String uniqueusername = "select * from users where username='" + user.getUsername() + "'";
List<User> users = jdbcTemplate.query(uniqueusername, new UserMapper());
if(users.size() == 0) {
String encryptedPassword = passwordEncoder.encode(user.getPassword());
String sql = "insert into users values(?,?,?,?,?,?)";
return jdbcTemplate.update(sql, new Object[] {
user.getUsername(),
encryptedPassword,
user.getFirstname(),
user.getLastname(),
user.getEmail(),
user.getAddress() });
}
else {
return 0;
}
}
I am trying to test this function using JUnit5 and Mockito however I am not too sure at how this would be accomplished. I have the following:
@Mock
JdbcTemplate jdbcTemplate;
@Test
public void testRegister() {
UserDaoImpl userdaoimpl = new UserDaoImpl();
ReflectionTestUtils.setField(userdaoimpl, "jdbcTemplate", jdbcTemplate);
Mockito.when(...);
assertEquals(...);
}
What would I have to include in the Mockito.when()
and assertEquals()
?
专注分享java语言的经验与见解,让所有开发者获益!
评论