Mockito不适用于Spring中的自定义验证器

问题描述 投票:1回答:1

我正在使用Mockito在controller类中测试我的获取映射之一。这是我的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测试方法。由于sin的格式错误,结果应该返回了错误的请求。

@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是否可以接收“ reservationValidator”?

java spring junit mockito springmockito
1个回答
0
投票

由于@ chrylis-onstrike-我已经解决了所有问题。对于源代码,我只需要删除@Before addholders设置方法,并将其替换为@Autowired上的注释Mockmvc mockmvc和服务类上的@MockBean注释,即可将客户端类放在应用程序上下文中。我不能给他的答案加上对号,太可惜了,因为他没有发表我的问题的答案,而是发表评论。

© www.soinside.com 2019 - 2024. All rights reserved.