模拟MVC javax.validation测试
我想模拟我的验证来测试 大小验证未在我的测试中运行。id的最大大小是40个字符,当我用42个长id测试它时,我会等待一个异常 MyObject.java MyTest.java: 我已经嘲笑了所有必要的服务。这些文件位于XML文件中,如下所示:模拟MVC javax.validation测试,validation,unit-testing,spring-mvc,mockito,Validation,Unit Testing,Spring Mvc,Mockito,我想模拟我的验证来测试 大小验证未在我的测试中运行。id的最大大小是40个字符,当我用42个长id测试它时,我会等待一个异常 MyObject.java MyTest.java: 我已经嘲笑了所有必要的服务。这些文件位于XML文件中,如下所示: <bean id="mockValidator" class="org.mockito.Mockito" factory-method="mock"> <constructor-arg value="javax.va
<bean id="mockValidator" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="javax.validation.Validator"/>
</bean>
从UI,一切正常。1)遇到的异常的完整堆栈跟踪是什么?2)为什么要模拟
验证程序?3)如果使用MockMvc
中的standaloneSetup()
方法,那么模拟ApplicationContext
中的任何内容都没有意义,因为standaloneSetup()
根本不使用您的ApplicationContext
。这就是为什么它是“独立的”。如果您想使用自己的ApplicationContext
,您需要使用MockMvcBuilders
中的webAppContextSetup()
方法。4)您正在测试的控制器方法的签名是什么?@BravoNine,您解决了这个问题吗?我已经在使用webAppContextSetup(),但它还不起作用
@Autowired
private Validator validator; // javax.validation.Validator
@Before
public void setUp() {
mockMvc = MockMvcBuilders.standaloneSetup(MyController).build();
}
@Test
public void Test() throws Exception {
myObject.setId(StringUtils.repeat("k", 42);
mockMvc.perform(post(MY_URL)
.contentType(MediaType.APPLICATION_JSON)
.content(mapper.writeValueAsString(myObject)))
.andExpect(status().isBadRequest())
.andExpect(content().contentType(APPLICATION_JSON_WITH_UTF8));
}
<bean id="mockValidator" class="org.mockito.Mockito" factory-method="mock">
<constructor-arg value="javax.validation.Validator"/>
</bean>
org.springframework.web.util.NestedServletException: Request processing failed; nested exception is java.lang.NumberFormatException: For input string: "kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk"