Sure, here’s the translation: JUnit5 测试 JDBC 函数

huangapple 未分类评论46阅读模式
英文:

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 = &quot;select * from users where username=&#39;&quot; + user.getUsername() + &quot;&#39;&quot;;
  List&lt;User&gt; users = jdbcTemplate.query(uniqueusername, new UserMapper());
  if(users.size() == 0) {
	  
String encryptedPassword = passwordEncoder.encode(user.getPassword());
  
String sql = &quot;insert into users values(?,?,?,?,?,?)&quot;;
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, &quot;jdbcTemplate&quot;, jdbcTemplate);
	Mockito.when(...);
    assertEquals(...);
	
}

What would I have to include in the Mockito.when()and assertEquals()?

huangapple
  • 本文由 发表于 2020年5月5日 01:38:24
  • 转载请务必保留本文链接:https://java.coder-hub.com/61598300.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定