如何在Spring 4.1.7中将模拟注入自定义ConstraintValidator?
我正在使用Spring4.1.7开发一个应用程序,并且正在使用带有独立上下文配置的mockMvc执行一些单元测试。我想测试一个提交表单的控制器方法 问题是表单中的某些字段使用自定义验证注释进行了注释,负责验证的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> {
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
之间的关系。显然有一个,但我还没有找到相关文档…)