2013-07-29 26 views
1

(解決):這是因爲PUT的默認參數類型是請求參數而不是表單參數。將「參數(..)」更改爲「formParameters(..)」,它會起作用。放置參數忽略放心

我的代碼: JUnit測試(圖1)

expect().statusCode(Status.NO_CONTENT.getStatusCode()) 
     .given() 
     .parameters("name", name, "URL", URL) 
     .cookie(cookie_name, newapi_session_id) 
     .put("/IfdOrganization/"+orgGuid); 

服務器代碼:(圖1)

@PUT @Path("/IfdOrganization/{guid}") @Produces({APPLICATION_XML, APPLICATION_JSON}) 
public void update(@PathParam("guid") String guid, @FormParam("name") String name,@FormParam("URL") String URL,@CookieParam(session_cookie_name) String sessionId, @Context HttpHeaders headers) { 
} 

問題: 當我的JUnit測試做一個把參數服務器上的「name」和「URL」值爲空(圖1)。如果我在JUnit測試中將「.put()」更改爲「.post()」,並在服務器上將「@PUT」更改爲「@POST」,則參數的值是正確的(圖2)。另外,在AJAX中使用PUT時,參數會得到正確的值,這意味着問題不是來自服務器。

我使用 蝕開普勒,窗8和休息保證的-1.8.0

JUNIT測試:(圖2)

expect().statusCode(Status.NO_CONTENT.getStatusCode()) 
      .given() 
      .parameters("name", name, "URL", URL) 
      .cookie(cookie_name, newapi_session_id) 
      .post("/IfdOrganization/"+orgGuid); 

服務器代碼:(圖2)

@POST @Path("/IfdOrganization/{guid}") @Produces({APPLICATION_XML, APPLICATION_JSON}) 
public void update(@PathParam("guid") String guid, @FormParam("name") String name,@FormParam("URL") String URL,@CookieParam(session_cookie_name) String sessionId, @Context HttpHeaders headers) { 
} 

任何幫助表示讚賞

回答

0

這是當前版本的RestAssured中的一個錯誤。 1.8.1 See here