Модульное тестирование Spring Boot 2 MockMVC с RequestPart и MultipartFile - PullRequest
0 голосов
/ 25 мая 2019

У меня есть нижеприведенный контроллер электронной почты для отправки электронной почты с объектом RequestPart DTO (userDTO) и файлом Multipart (максимум 3 файла).где userDTO - это объект JSON

Я пытался использовать почтальон, и он отлично работает для отправки электронной почты с вложениями, однако мне нужно разработать модульное тестирование с использованием MockMVC, и я не могу найти подходящих примеров для этих комбинаций Multipartи запрос части.Когда я попытался использовать приведенный ниже тестовый класс, я не смог поразить мой контроллер, который вызовет электронную почту.

Мой контроллер

   @PostMapping(path = "/api/email/sendEmail)
    public ResponseEntity<UserDto> sendEmail(@RequestPart(value = "file", required = false) MultipartFile[] uploadfile,
            @RequestPart UserDto userDTO, WebRequest webRequest) {

            webRequest.setAttribute("userDTO", userDTO, RequestAttributes.SCOPE_REQUEST);
            UserDto obj = emailService.sendEmail(userDTO, uploadfile);
            return new ResponseEntity<>(obj, HttpStatus.OK);

    }

МойJSON (userDTO), который входит в часть запроса

{
"sender":"sender@gmail.com",
"recipients":"receiver@gmail.com",
"subject":"Hi Testing Mail API",
"content":"This is my email"
}

Мой тестовый класс

@ContextConfiguration
@WebAppConfiguration
public class ServicesApplicationTests {

    @Autowired
    private WebApplicationContext webApplicationContext;

    private MockMvc mockMvc;


      @Test
        public void testEmail() throws Exception {
            mockMvc = MockMvcBuilders.webAppContextSetup(webApplicationContext).build();            
             mockMvc.perform(post("/api/email/sendEmail")
            .contentType(MediaType.APPLICATION_JSON)
               .content("{ \"sender\":\"sender@gmail.com\",\"recipients\":\"receiver@gmail.com\",\"subject\":\"Hi Testing Mail API\",\"content\":\"This is my email\"}")
               .accept(MediaType.APPLICATION_JSON));


        }

Любые выводы будут высоко оценены.Спасибо

...