1

我正在使用 Mockito 在控制器类中测试我的一个获取映射。这是我的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”吗?

4

1 回答 1

0

感谢@chrylis-onstrike-,我把所有东西都修好了。对于源代码,我只需要删除@Beforeaddholders 设置方法并将其替换为将客户端类放在应用程序上下文中的服务类@AutowiredMockmvc mockmvc和上的注释。@MockBean很遗憾我不能给他的答案打勾,因为他没有发布我的问题的答案,而是发表评论。

于 2020-02-24T07:22:40.117 回答