Я хочу проверить свой контроллер регистра, и я получаю, и по ошибке bcz опубликованные данные не преобразуются в мою модель, и тест выпадает на проверку.
@PostMapping(value = "/register", consumes = "application/json")
@ResponseStatus(HttpStatus.CREATED)
private String postRegistration( @ModelAttribute @Valid final UserCreateFormDto user, final BindingResult result,
final RedirectAttributes redirectAttributes, final WebRequest webRequest) {
if (result.hasErrors()) {
redirectAttributes.addFlashAttribute("org.springframework.validation.BindingResult.user", result);
redirectAttributes.addFlashAttribute("user", user);
return "redirect:/register";
}
if (userService.checkEmailExist(user.getEmail())) {
return "redirect:/register?exist";
}
final User registered = userService.createNewUserAccount(user);
try {
final String appUrl = webRequest.getContextPath();
eventPublisher.publishEvent(new RegistrationCompleteEvent(registered, webRequest.getLocale(), appUrl));
return "redirect:/login?success";
} catch (UserNotExistsException e) {
return "redirect:/register";
}
}
и тест
@Test
public void shouldReturnHttp201WhenUserIsCreated() throws Exception {
//given
final UserCreateFormDto userCreateFormDto = createUserCreateForm();
final User user = createUser();
given(userService.checkEmailExist(userCreateFormDto.getEmail())).willReturn(false);
given(userService.createNewUserAccount(any(UserCreateFormDto.class))).willReturn(user);
//when
final MockHttpServletResponse response = mockMvc
.perform(post("/register").with(csrf())
.contentType(MediaType.APPLICATION_JSON_UTF8)
.content(objectMapper.writeValueAsString(userCreateFormDto)))
.andReturn()
.getResponse();
//then
assertThat(response.getStatus()).isEqualTo(HttpStatus.CREATED.value());
assertThat(response.getContentAsString()).isEqualTo(userJacksonTester.write(user).getJson());
verify(userService).createNewUserAccount(refEq(userCreateFormDto));
}
Я думаю, что эта фотография должна объясняться настолько просто, насколько это возможно
Редактировать Я пытался подделать BindingResult, нопосле прочтения больше это не было хорошей идеей.