0

以下测试(测试验证失败,因为用户接受的条款和条件不是最新版本)工作正常,但我想测试返回的错误消息。这样做的原因是后续测试(如果接受的条款和条件版本为空,则检查验证是否失败)将具有相同的测试标准。

因此,我还想测试返回的错误消息。我整个上午都在寻找一些东西,但找不到任何东西,这让我想知道是否甚至可以访问/测试错误消息值?我可以看到它在模型中,但正在努力访问/测试它。

任何帮助,将不胜感激!

提前致谢

小号

测试

@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"));

}
4

1 回答 1

1

我曾经试图解决类似的问题,但我只有不是很正式的解决方案。我检查了代码他们是如何做的,我发现任何错误都存储在前缀为 的模型中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;
}

这样您就可以从模型中获取它并检查详细信息...

于 2014-12-05T14:13:58.290 回答