Почему мой запрос не преобразует json в объект модели в Spring Boot - PullRequest
1 голос
/ 24 октября 2019

Я хочу проверить свой контроллер регистра, и я получаю, и по ошибке 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, нопосле прочтения больше это не было хорошей идеей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...