Как опубликовать JSON в запросе в Struts2 Junit4 Testcase

Тест выглядит так:

@Test
    public void testSave() throws Exception {
        request.setContent("{\"id\":\"1\",\"name\":\"nitin\"}".getBytes());
        request.setContentType("application/json");
//        request.setMethod("post");

        ActionProxy proxy = getActionProxy("/save");
        actions.MyAction myAct = (actions.MyAction) proxy.getAction();

        String result = proxy.execute();

        System.out.println("test id : " + myAct.getId());
        System.out.println("test name : " + myAct.getName());

        assertEquals("success", result);

        System.out.println(response.getContentAsString());
    }

Я пытаюсь опубликовать JSON для действия struts2, и я получаю:

test id : null
test name : null

Хотя, если я попробую то же самое, используя JSP:

test.jsp

<script>
            var data = '{"id":"1","name":"nitin"}';
            $.ajax({
                url: "http://localhost:8084/Struts2Junit4/save",
                data: data, //returns all cells' data
                dataType: 'json',
                contentType: 'application/json',
                type: 'POST',
                success: function(res) {
                    console.log(res);
                }
            });
        </script>

Я получаю оба параметра.

Я думаю, что я что-то упускаю при написании тест-кейса. Пожалуйста помоги.

1 ответ

Решение

JSONInterceptor ищет content-type заголовок, поэтому вам нужно использовать request.addHeader вместо request.setContentType,

request.setContent("{\"id\":\"1\",\"name\":\"nitin\"}".getBytes());
request.addHeader("Content-Type", "application/json");
Другие вопросы по тегам