Mockito не работает с пользовательским валидатором в Spring - PullRequest
1 голос
/ 24 февраля 2020

Я использую Mockito для проверки одного из моих get-отображений в классе контроллера. Вот мой метод get

 @PostMapping(value = "insert/carbooking")
    public ResponseEntity<Void> reservation(@Valid BookingRequest bookRequest) {
        return validate(bookRequest, carService::booking);
    }

В верхней части моего класса находится мой валидатор

  @Autowired
  private ReservationValidator reservationValidator;

  @InitBinder("bookRequest")
    protected void bookRequestBinder(WebDataBinder binder) {
        binder.addValidators(reservationValidator);
    }

Вот метод теста Mockito. Результат должен был вернуть неверный запрос, так как грех в неправильном формате.

@Test
    public void reservationTest2() throws Exception {

        mockMvc.perform(MockMvcRequestBuilders
                .post("insert/carbooking")
                .param("license", "data")
                .param("SIN", "202007191517")
                .accept(MediaType.MULTIPART_FORM_DATA))
                .andExpect(status().isBadRequest());
    }

Но тест не пройден

java.lang.AssertionError: Status expected:<400> but was:<200>
Expected :400
Actual   :200

Есть ли способ для Mockito получить «bookingValidator»

1 Ответ

0 голосов
/ 24 февраля 2020

Я все исправил благодаря @ chrylis-onstrike-. Для исходного кода мне просто нужно удалить метод установки @Before addholder и заменить его аннотацией @Autowired на Mockmvc mockmvc и @MockBean на классе обслуживания, который помещает клиентский класс в контекст приложения. Жаль, что я не смог поставить галочку в его ответе, потому что он не опубликовал ответ на мой вопрос, а прокомментировал его.

...