2017-09-10 18 views
1

私はSpringブートアプリケーションを作成しました。これは私のコントローラの外観です。私は郵便配達員を使用してリクエストボディにjsonを、リクエストヘッダーに文字列を送り、さらにjsonをハッシュし、リクエストヘッダで得られた文字列と比較しています。問題は、MockMvcを使用してそれぞれのControllerクラスをテストするために、リクエスト本体とリクエストヘッダーを取得することに気づいていないことです。spring 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")); 
    } 

} 

四あなたの場合:

@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

関連する問題