Java 如何在struts2 junit4测试用例中在请求中发布json

Java 如何在struts2 junit4测试用例中在请求中发布json,java,struts2,struts2-junit-plugin,Java,Struts2,Struts2 Junit Plugin,测试如下所示: @Test public void testSave() throws Exception { request.setContent("{\"id\":\"1\",\"name\":\"nitin\"}".getBytes()); request.setContentType("application/json"); // request.setMethod("post"); ActionProxy prox

测试如下所示:

@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>

变量数据='{“id”:“1”,“name”:“nitin”}';
$.ajax({
url:“http://localhost:8084/Struts2Junit4/save",
data:data,//返回所有单元格的数据
数据类型:“json”,
contentType:'应用程序/json',
键入:“POST”,
成功:功能(res){
控制台日志(res);
}
});
我得到了这两个参数


我想我在编写测试用例时遗漏了一些东西。请提供帮助。

JSONInterceptor会查找
内容类型
标题,这就是为什么您需要使用
request.addHeader
而不是
request.setContentType

request.setContent("{\"id\":\"1\",\"name\":\"nitin\"}".getBytes());
request.addHeader("Content-Type", "application/json");