Spring MockMVC-如何在使用MockMvcBuilder创建嘲笑vc请求时嘲笑自定义验证器

问题描述

我为验证器创建了自定义注释。

@Documented
@Constraint(validatedBy = checkEmailsValidator.class)
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.METHOD,ElementType.FIELD,ElementType.ParaMETER })
public @interface checkEmails {

    String message() default ErrorConstants.required_ParaMS;

    Class<?>[] groups() default {};

    Class<? extends Payload>[] payload() default {};
    
    }

验证器类:

 public class checkEmailsValidator implements  ConstraintValidator<checkEmails,Email> {
   
    public boolean supports(Class<?> clazz) {
        return Emails.class.equals(clazz);
    }
    @Override
    public boolean isValid(Email emails,ConstraintValidatorContext cxt) {
        
        .......
    }

}

和我的控制器类:

@RestController
@Validated
class RestController{

 @GetMapping("/{Id}/emails")
    public Page<EmailDTO> getEmails(@PathVariable String Id,@checkEmails Email emails,Pageable pageable) {
        return customerService.getEmails(customerId,emails,pageable);
    }

以及当我想使用模仿者为getEmails方法的控制器创建模仿者时,例如:

 @Before
    public void setUp() {
         this.mockmvc=  mockmvcBuilders.standalonesetup(customerController).setValidator(new checkEmailsValidator()).setCustomArgumentResolvers(new PageableHandlerMethodArgumentResolver()).build();
}

除了setValidator的Validator类型的参数外,它给出错误,但我正在传递constraintValidator类型的对象。如何解决

,如果我从setValidator方法删除了checkEmailsValidator,则由于缺少验证器,因此我无法检查BadRequest条件。如何检查BadRequest条件。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)