2014-03-04 52 views
1

我是我的Spring MVC控制器上做的JUnit -如何JUnit的一個方法的返回類型Spring MVC中控制器

@RequestMapping(value = "index", method = RequestMethod.GET) 
    public HashMap<String, String> handleRequest() { 
    HashMap<String, String> model = new HashMap<String, String>(); 
    String name = "Hello World"; 
    model.put("greeting", name); 

    return model; 
} 

而下面是我對上述方法的JUnit -

public class ControllerTest { 

    private MockMvc mockMvc; 

    @Before 
    public void setup() throws Exception { 
    this.mockMvc = standaloneSetup(new Controller()).build(); 
    } 

    @Test 
    public void test01_Index() { 

    try { 
     mockMvc.perform(get("/index")).andExpect(status().isOk()); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    } 
} 

以上junit工作正常..

但我的問題是我該如何junit返回類型handleRequest這是返回一個HashMap鍵和值對..我怎麼確認它正在返回Hello World?有沒有什麼方法可以做到這一點?

回答

2

看一看at the examples in the Spring reference manual是指使用MockMvc來測試服務器端代碼。假設你正在返回的JSON響應:

mockMvc.perform(get("/index")) 
    .andExpect(status().isOk()) 
    .andExpect(content().contentType("application/json")) 
    .andExpect(jsonPath("$.greeting").value("Hello World")); 

順便說一句 - 從來沒有趕上,並在@Test方法吞下一個例外,除非你想忽略異常,並防止它未能通過測試。如果編譯器抱怨說你的測試方法調用了引發異常的方法,而你沒有處理它,只需將方法簽名更改爲throws Exception即可。

+0

Thanks .. that works ..還有一件事假設我的'handleRequest'方法接受一個字符串參數,那麼我怎麼會通過我的junit測試呢? – AKIWEB

+0

@AKIWEB包含在鏈接文檔中,請查看「執行請求」部分 –

相關問題