Как junit вернуть тип метода в контроллере spring mvc

Я делаю 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 работает нормально..

Но мой вопрос заключается в том, как мне объединить возвращаемый тип handleRequest, который возвращает HashMap с парой ключ-значение. Как мне убедиться, что он возвращает Hello World? Есть ли способ сделать это?


person AKIWEB    schedule 04.03.2014    source источник


Ответы (1)


Посмотрите в примерах в справочном руководстве Spring говорится об использовании MockMvc для тестирования кода на стороне сервера. Предполагая, что вы возвращаете ответ JSON:

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

Кстати, никогда не перехватывайте и не проглатывайте исключение в методе @Test, если только вы не хотите игнорировать это исключение и не допустить, чтобы оно провалило тест. Если компилятор жалуется, что ваш тестовый метод вызвал метод, выбрасывающий исключение, а вы его не обработали, просто измените сигнатуру метода на throws Exception.

person matt b    schedule 04.03.2014
comment
Спасибо .. это работает .. Еще одна вещь, предположим, что мой метод handleRequest принимает строковый параметр, тогда как мне передать это из моего теста junit? - person AKIWEB; 05.03.2014
comment
@AKIWEB, описанный в связанном документе, см. в разделе «Выполнение запросов». - person matt b; 05.03.2014