【发布时间】:2019-06-21 12:31:51
【问题描述】:
我必须对我的服务层进行单元测试,但我不知道该怎么做,因为我是 SpringMvc 的新手。
这是我要测试的方法:
@Override
public String update(String username, User newUserData, BindingResult result, Model model) {
if (result.hasErrors()) {
updateModelData(model, "", result.getAllErrors());
return HOME_VIEW_NAME;
}
User foundUser = this.userRepository.findByUsername(username);
if (foundUser == null) {
throw new UserNotFoundException(username);
}
String queryResult = String.format("UPDATED SUCCESSFULLY: \n Old User: %s", foundUser);
foundUser.setPassword(encryptPassword(newUserData.getPassword()));
foundUser.setStatus(newUserData.getStatus());
queryResult += String.format("New User: %s", foundUser);
this.userRepository.save(foundUser);
updateModelData(model, queryResult, new ArrayList<>());
return HOME_VIEW_NAME;
}
首先 - 我想知道保留Model、BindingResult 并在服务层返回一个页面是否是个好主意?如果没有,为什么不呢?
第二 - 我应该如何正确测试这个方法?
谢谢!
【问题讨论】:
-
首先不,因为这些应该保留在您的控制器中,并且您的服务应该只包含更新/保存用户的代码。模拟单元测试第二名。
-
谢谢!我将重构此代码以将逻辑与 UI 处理解耦
标签: spring spring-mvc