2014-12-05 47 views
0

以下測試(測試驗證失敗,因爲用戶接受的條款和條件不是最新版本)工作正常,但我想測試返回的錯誤消息。原因是後續測試(如果接受的條款和條件版本爲空,檢查驗證失敗)將具有相同的測試標準。movckmvc測試返回了正確的錯誤消息

因此,我也想測試返回的錯誤消息。我花了整整一個早上搜索somethign,並且找不到任何讓我懷疑是否可以訪問/測試錯誤消息值的任何內容?我可以看到它在Model中,但是很難進入/測試它。

任何幫助,將不勝感激!

在此先感謝

小號

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

} 

回答

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; 
} 

,所以你能夠從模型獲得,並檢查細節...