如何在Spring 4.1.7中将模拟注入自定义ConstraintValidator?

如何在Spring 4.1.7中将模拟注入自定义ConstraintValidator?,spring,junit,mockito,bean-validation,mockmvc,Spring,Junit,Mockito,Bean Validation,Mockmvc,我正在使用Spring4.1.7开发一个应用程序,并且正在使用带有独立上下文配置的mockMvc执行一些单元测试。我想测试一个提交表单的控制器方法 问题是表单中的某些字段使用自定义验证注释进行了注释,负责验证的ConstraintValidator需要额外的依赖项,我想模拟这些依赖项。我怎么做 验证器的代码如下所示: public class EmailValidator implements ConstraintValidator<CorrectEmail, Object> {

我正在使用Spring4.1.7开发一个应用程序,并且正在使用带有独立上下文配置的mockMvc执行一些单元测试。我想测试一个提交表单的控制器方法

问题是表单中的某些字段使用自定义验证注释进行了注释,负责验证的ConstraintValidator需要额外的依赖项,我想模拟这些依赖项。我怎么做

验证器的代码如下所示:

public class EmailValidator implements ConstraintValidator<CorrectEmail, Object> {

    @Autowired
    private ConfigurationManager configurationManager;

    @Override
    public boolean isValid(Object value, ConstraintValidatorContext constraintValidatorContext) {
        String pattern = configurationManager.getPattern();
        //performing checks
    }
}
@UnitTest
@RunWith(MockitoJUnitRunner.class)
public class RegisterPageControllerUnitTest {

    private MockMvc mockMvc;

    @InjectMocks
    private Controller controller;

    @Before
    public void setUp() {
        mockMvc = MockMvcBuilders.standaloneSetup(controller).build();
    }

    @Test
    public void sdlkjf() throws Exception {
        mockMvc.perform(post("/register")
            .contentType(MediaType.APPLICATION_FORM_URLENCODED)
            .param("email", "email@gmail.com"));
}
}

当我尝试运行我的测试时,我得到了
NullPointerException
,因为
configurationManager
没有被注入。

可能是@ArnaudClaudel的重复,不可能,SpringWebConstraintValidatorFactory是在Spring 4.2.3中添加的。我见过这个问题,但不幸的是,它对我没有用
控制器上的
@InjectMocks
应该做什么?我没有看到您创建任何应该注入其中的Mock(
@Mock
)。(注意,但是我还没有完全理解
MockMvcBuilders.standaloneSetup
Mockito
之间的关系。显然有一个,但我还没有找到相关的文档…)可能是@ArnaudClaudel的副本,不,不是,SpringWebConstraintValidatorFactory是在Spring4.2.3中添加的。我见过这个问题,但不幸的是,它对我没有用
控制器上的
@InjectMocks
应该做什么?我没有看到您创建任何应该注入其中的Mock(
@Mock
)。(注意,但是我还没有完全理解
MockMvcBuilders.standaloneSetup
Mockito
之间的关系。显然有一个,但我还没有找到相关文档…)