簡體   English   中英

如何使用Spring MockMVC將JSON編碼為請求參數

[英]How to encode JSON as request parameter using Spring MockMVC

我已經嘗試了幾個小時,將JSON編碼為我正在使用Spring的MockMVC編寫的測試的請求參數,但是沒有運氣。

我的測試看起來像

@Before
public void setUp() {       
    mockMvc = MockMvcBuilders.standaloneSetup(new TestController())
            .build();
}

@Test
public void shouldReturnJSONGeneratedByView() throws Exception {
    String sampleJson = "{\"key\":\"value\"}";

    String json = UriComponentsBuilder.newInstance()
    .path(sampleJson)
    .build().encode().toUriString();

    mockMvc.perform(MockMvcRequestBuilders.get("/Node?json="+json))
    .andExpect(status().isOk());
}

但是到達我的控制器的字符串仍被編碼(“%7B%22key%22:%22value%22%7D”),因此不能反序列化為JSON。

我缺少讓Spring理解編碼參數的東西嗎?

謝謝你的幫助

我相信您的JSON被編碼了兩次,因此控制器收到一個仍被編碼的String(僅被解碼一次)。

MockMvcRequestBuildersJavaDoc聲明了有關要get的第一個參數的以下內容:

urlTemplate-URL模板; 結果網址將被編碼

因此,我認為您不需要自己對JSON進行編碼,並且以下內容應該可以工作:

mockMvc.perform(MockMvcRequestBuilders.get("/Node?json={json}", sampleJson))
.andExpect(status().isOk());

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM