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