spring - 春季测试 mockmvc 实际:500 预期:200
问题描述
我想知道我做错了什么测试,尽管遵循教程和 SO 主题,我根本无法进行测试。
这是我的代码,它给了我一个预期的 200 收到:500,如果有人能指出我一个很好的测试资源,我将不胜感激,因为我找不到一个给出工作示例的资源,或者告诉我我不是哪个基本原则掌握我应该重点关注的地方。
@ExtendWith(SpringExtension.class)
@AutoConfigureMockMvc
@SpringBootTest
@WebMvcTest(controllers = UserController.class)
public class UserControllerTest {
@Autowired
private MockMvc mockMvc;
ObjectMapper objectMapper = new ObjectMapper();
@MockBean
private User user;
@MockBean
private UserService userService;
@Mock
private UserRepository userRepository;
@Before
public void setup() throws Exception {
mockMvc = MockMvcBuilders.standaloneSetup(new UserController()).build(); //Construct MockMVC
}
@Test
public void whenValidInput_thenReturns200() throws Exception {
Cart cart = Cart.builder().build();
Date birthdate = new Date(1978-06-06);
ObjectWriter ow = new ObjectMapper().writer().withDefaultPrettyPrinter();
User user = new User(1231231231231L, "Denis", "Pierre", "pierre@hotmail.com", "pass", "adresse", birthdate, cart);
String json = ow.writeValueAsString(user);
when(
mockMvc.perform(post("/api/users/register/", user)
.contentType(MediaType.APPLICATION_JSON)
.content(objectMapper.writeValueAsString(user))
.accept(MediaType.APPLICATION_JSON))
.andExpect(status().isOk()));
}
}
这是电影控制器
@PostMapping("/users/register")
public ResponseEntity<User> registerUser(@RequestBody User user) {
try {
Optional<User> userData = userService.findByEmail(user.getEmail());
if (userData.isPresent()) {
// existing email, cannot register
return new ResponseEntity<>(null, HttpStatus.CONFLICT);
} else {
userService.saveUser(user);
return new ResponseEntity<>(HttpStatus.OK);
}
} catch (Exception e) {
return new ResponseEntity<>(null, HttpStatus.INTERNAL_SERVER_ERROR);
}
}
这是我得到的确切错误消息:
11:51:58.389 [main] DEBUG org.springframework.web.servlet.mvc.method.annotation.HttpEntityMethodProcessor - Nothing to write: null body
11:51:58.392 [main] DEBUG org.springframework.test.web.servlet.TestDispatcherServlet - Completed 500 INTERNAL_SERVER_ERROR
解决方案
推荐阅读
- javascript - 将动画脚本应用到不同的 Div/img
- python - 导入 Django 2.0 实用程序函数(与 django 1.1 相比)
- python - matplotlib导航栏错误'FigureCanvasTkAgg'对象在tkinter中没有属性'manager'
- php - 停止亚马逊 ec2 健康检查器检查文件
- python - 如何根据预定义的行索引逐行更改张量的值
- java - 如何将值传递给 JavaFX 中的当前/上一个阶段?
- python - 有没有办法让用户提供将在我的程序中运行的 Python 代码?
- gradle - 使用从 4.9 迁移的 Gradle 5.3.1 发布
- javascript - 为什么可以将元素推送到数组但不能在 mongodb 中正确保存?
- mysql - ER_NON_UNIQ_ERROR 以及如何正确设计表