Как опубликовать 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");