以下测试(测试验证失败,因为用户接受的条款和条件不是最新版本)工作正常,但我想测试返回的错误消息。这样做的原因是后续测试(如果接受的条款和条件版本为null,则检查验证失败)将具有相同的测试标准。
因此,我还想测试返回的错误消息。我花了一整个上午搜索某些东西,找不到任何让我想知道是否甚至可以访问/测试错误消息值的内容?我可以在模型中看到它,但我正在努力访问/测试它。
任何帮助将不胜感激!
提前致谢
取值
TEST
@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration({ "file:src/main/webapp/WEB-INF/spring-servlet.xml" })
public class FailureRegistrationControllerTest {
@Autowired
private WebApplicationContext wac;
private MockMvc mockMvc;
@Before
public void setUp() throws Exception {
mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
}
@Test
public void acceptedVersionIsNotTheLatestTest() throws Exception {
//Create the DTO User
UserRegistrationDTO user = TestingUtility.createMinimumUserDTO();
user.setTermsAndConditionsVersion(TestingConstants.NOT_LATEST_TERMS_AND_CONDITIONS);
//Run the test
ResultActions resultActions = TestingUtility.buildResultsActionsMinimum(mockMvc, user);
resultActions.andExpect(status().isOk());
resultActions.andExpect(view().name("register"));
resultActions.andExpect(model().attributeHasFieldErrors("user", "termsAndConditionsAccepted"));
}
答案 0 :(得分:1)
我试图解决类似的问题,但我只是没有非常正式的解决方案。我检查了code他们是如何做的,我发现任何错误都存储在前缀为BindingResult.MODEL_KEY_PREFIX
的模型中,请参阅他们的代码:
private BindingResult getBindingResult(ModelAndView mav, String name) {
BindingResult result = (BindingResult) mav.getModel().get(BindingResult.MODEL_KEY_PREFIX + name);
assertTrue("No BindingResult for attribute: " + name, result != null);
return result;
}
因此您可以从模型中获取并检查详细信息...