我遇到了JUnit和MockMvc的问题。这是我的代码:
MvcResult result = mockMvcUser.perform(post("/user/adduser")
.content(user)
.contentType(contentType))
.andExpect(status().isOk())
.andReturn();
UserService userService = new UserService();
String userId = result.getResponse().getContentAsString();
User userObj = userService.findUserById(userId);
// the userObj is null and I have no idea why
MvcResult sessionIdObj = mockMvcLogin.perform(post("/login/authenticate")
.param("username", userObj.getEmail())
.param("password", userObj.getPassword())
.contentType(contentType))
.andExpect(status().isOk())
.andReturn();
当我添加用户时,我可以在数据库中看到新条目。当我想用findUserById搜索它时,我总是得到null。当我在那里设置断点时,我将每次都获得用户对象,并且测试按设计工作。我的问题是为什么我在没有断点的情况下运行测试时总是会得到null?
以下是findUserById的代码
public User findUserById(String id) {
Session session = HibernateUtil.getSessionFactory().openSession();
try {
User user = (User) session.get(User.class, id);
return user;
} catch (Exception e) {
e.printStackTrace();
return null;
} finally {
session.close();
}
}
我从来没有例外。我希望你们知道那里发生了什么。