[英]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(僅被解碼一次)。
MockMvcRequestBuilders
的JavaDoc聲明了有關要get
的第一個參數的以下內容:
urlTemplate-URL模板; 結果網址將被編碼
因此,我認為您不需要自己對JSON進行編碼,並且以下內容應該可以工作:
mockMvc.perform(MockMvcRequestBuilders.get("/Node?json={json}", sampleJson))
.andExpect(status().isOk());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.