2013-08-27 2 views
0

나는 봄 MVC 애플리케이션을 테스트 중이다.
브라우저에 대한 응답에 특정 패턴이 있고 응용 프로그램이 일부 json을 다시 전송하는지 확인해야합니다. DT_RowId에 임의의 숫자가 포함되어 있으므로 비교하고 싶지 않은 DT_RowId라는 필드가 있습니다. 따라서 DT_RowId와 그 내용을 제외한 모든 Json 본문을 비교하고 싶습니다.
DT_RowId의 일반적인 발생은 "DT_RowId": "8407709537703772"입니다. 그리고 일반적인 JSON 응답은 다음과 같습니다 아래테스트 봄 MVC 응답 패턴 (응답의 항목에서 json 필드 무시)

{"id":-1,"fieldErrors":[],"aaData":[{"id":8002,"firstname":"Bob","lastname":"Jones","email":"[email protected]","DT_RowId":"8407709537703772"},{"id":8002,"firstname:"Dan","lastname":"Jones","email":"[email protected]","DT_RowId":"8404309537701754"}]} 

, 내 테스트 :

@Test 
public void testGetUsersJson() throws Exception { 
    mockMvc.perform(get("/users") 
     .accept(MediaType.APPLICATION_JSON)) 

     .andDo(print()) 

     .andExpect(content().contentType("application/json")) 
     // How can I modify the line below?? 
     .andExpect(content().bytes(IOUtils.toByteArray(ctx.getResource("classpath:responses/users.getUsersJson.mywebapp.response.json").getInputStream()))) 
     .andExpect(status().isOk()) 
     .andExpect(redirectedUrl(null)) 
     .andExpect(forwardedUrl(null)); 
} 

어떻게 위의 코드를 수정할 수 있습니까? 필드 "DT_RowId"를 제외한 모든 Json 응답을 비교하고 싶습니다. 영리한 아이디어?

+0

'DT_RowId' 필드가 필요합니까? 그렇지 않은 경우 JSON 응답에서 생략하지 않으시겠습니까? – CodeChimp

+0

예, DT_RowId 필드가 필요합니다. 그렇지 않으면 질문에 아무런 의미가 없습니다. – daniele

+0

그냥 질문이었습니다. 클라이언트에서 DT_RowId를 전혀 사용하지 않는다면 생략하면 비교가 더 쉬워집니다. 때로 사람들은 잘못된 위치에서보고 있기 때문에 명백한 것을 보지 못합니다. – CodeChimp

답변

0

당신은() 여기. 경기 (정규 표현식을 컨텐츠()) andExpect를 사용하고 DT_RowId 제외하고 당신의 users.getUsersJson.mywebapp.response.json 내용과 일치하는 정규 표현식을 작성할 수 있습니다.