如何在spring mvc控制器中使用junit返回类型的方法

时间:2014-03-04 20:21:29

标签: java spring spring-mvc junit spring-mvc-test

我正在使用我的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;
}

以下是我对上述方法的要求 -

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工作得很好..

但我的问题是我如何使用键和值对返回handleRequest的{​​{1}}的返回类型。如何验证它是否正在返回HashMap?有没有办法做到这一点?

1 个答案:

答案 0 :(得分: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