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");