Весенний загрузочный тест для Restful POST API DTO с атрибутом MultiPartFile - PullRequest
0 голосов
/ 12 ноября 2019

У меня есть приложение Spring Boot, в котором есть RestController со следующим методом POST:

@PostMapping(path = "/add", headers = {"content-type=multipart/form-data; charset=utf-8"})
    public ResponseEntity<UserWebDTO> addUser(@RequestHeader HttpHeaders headers, @ModelAttribute UserAddDTO userAddDTO) throws Exception {
        return new ResponseEntity<>(userService.addUser(userAddDTO), HttpStatus.CREATED);
    }

и UserAddDto выглядит следующим образом:

public class UserAddDTO {

private String first_name;

private String last_name;

private String country_code;

private String phone_number;

private GenderEnum gender;

private String birthdate;

private MultipartFile avatar;

private String email;

}

Код прекрасно работает с почтальоном, но я не знаю, как сделать интеграционный тест с MockMvc для этого dto с объектом Multipartfile, и тест, который я попробовал, дает мне:

com.fasterxml.jackson. databind.exc.InvalidDefinitionException: не найден сериализатор для класса java.io.ByteArrayInputStream и не обнаружены свойства для создания BeanSerializer (во избежание исключения отключите SerializationFeature.FAIL_ON_EMPTY_BEANS) (через цепочку ссылок: com.user.basic.authentication.dtos.UserATOD"avatar"] -> org.springframework.mock.web.MockMultipartFile ["inputStream"])

любая помощь приветствуется.

Спасибо!

1 Ответ

0 голосов
/ 12 ноября 2019

Я считаю, что вам нужно реализовать Serializable

public class UserAddDTO implements Serializable {
private static final long serialVersionUID = 1L;

private String first_name;

private String last_name;

private String country_code;

private String phone_number;

private GenderEnum gender;

private String birthdate;

private MultipartFile avatar;

private String email;

}

...