2013-10-27 51 views
2

測試看起來是這樣的:如何發佈JSON在請求一個Struts2的junit4測試用例

@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"); 
+0

它的工作!完善。 –