2017-09-10 4 views
1

스프링 부트 응용 프로그램을 만들었으며 이것이 내 컨트롤러의 모습입니다. 나는 우편 발송자를 사용하여 요청 본문에 json을 보내고 요청 헤더에 문자열을 넣은 다음 json을 해싱하고 요청 헤더에있는 문자열과 비교합니다. 문제는 MockMvc를 사용하여 각각의 Controller 클래스를 테스트하기 위해 요청 본문과 요청 헤더를 얻지 못한다는 것입니다.봄 mvc 테스트에서 요청 본문 및 요청 헤더에 액세스

컨트롤러 로직

@RestController 
public class Comparison { 

    @PostMapping(path = "/test") 
    public boolean compareHash(@RequestBody String json, 
           @RequestHeader(value = "code") String oldHashValue) { 

     Hash hashObj = new Hash(); 
     String newHashValue = hashObj.sha512(json); 
     return oldHashValue.equals(newHashValue); 
    } 
} 

테스트 로직

public class ComparisionTest { 

    @Autowired 
    private WebApplicationContext wac; 

    private MockMvc mockMvc; 

    @Before 
    public void setup() { 
     DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac); 
     this.mockMvc = builder.build(); 
    } 

    @Test 
    public void contextLoads() throws Exception { 
     RecordedRequest recordedRequest = server.takeRequest(); 
    } 
} 

위의 요청에서 몸과 헤더 값을 검색하는 코드와 해시를 동일시 (몸)에 저를 도와주세요 헤더 값 포함

답변

1
@RunWith(SpringRunner.class) 
@SpringBootTest 
@AutoConfigureMockMvc 
public class ApplicationTest { 

    @Autowired 
    private MockMvc mockMvc; 

    @Test 
    public void test() { 

     mockMvc.perform(post("<<url>>").content("<<jsonStrig>>").header("key","value")); 
    } 

} 
,451,515,

네 귀하의 경우 :

@Autowired 
    private MockMvc mockMvc; 

    @Test 
public void test() throws Exception { 

    String jsonString="{\"country\": \"India\", \"currency\": \"INR\", \"president\": \"Ram Nath Kovind\" } "; 
    mockMvc.perform(MockMvcRequestBuilders.post("/test").content(jsonString).header("code","12400f74dc4d8d69b713b1fe53f371c25a28a8c5fac2a91eea1f742ab4567c9c")); 
} 

출력 :

JSON STRING {"country": "India", "currency": "INR", "president": "Ram Nath Kovind" } header value 12400f74dc4d8d69b713b1fe53f371c25a28a8c5fac2a91eea1f742ab4567c9c 
+0

이 해시 값을 얻을 수 n은 다음 컨트롤러에 도달 할 헤더 값 – Sunil

+0

과 비교하기 위해 REQ 해쉬 함수로 JSON 문자열을 보내드립니다 거기에 양식을 – Barath

+0

처리해야합니다 그리고 그 콘텐츠()에서 json 문자열을 어떻게 받아 들일지 및 "키"머리글 이름을 언급 할 필요가 의심 ... 나는이 물건에 처음이다 – Sunil