2013-07-08 4 views
0

다음과 같은 방법으로 DELETE 동사를 테스트합니다. 잘 작동하는 것 같습니다.Jersey Restful Testing with Junit

@Test 
public void testDelete() throws Exception { 
    WebResource webResourceTest = webResource.path("/deletesomestuff/delete").queryParam("FT","From Test"); 
    final String responseString = webResourceTest.type(MediaType.TEXT_PLAIN).delete(String.class); 
    Assert.assertEquals("Request fulfilled.", responseString); 
} 

이렇게하면 문자열에있는 내용을 반환합니다. 다음은 실제 DELETE API 호출의 스 니펫입니다.

@DELETE 
@Path("/delete") 
@Produces(MediaType.TEXT_PLAIN) 
public Response delete(@PathParam("/delete") String deleteString) { 
    <snip> 
    return Response.status(204).entity("Request fulfilled.").build(); 
} 

DELETE 호출도 올바르게 작동하고 올바른 문자열을 반환하지만 내 질문은 이것입니다. WebResource를 통해 응답 상태를 반환하려면 어떻게해야합니까? 나는 그것을 찾아 낼 수있는 방법을 찾을 수없는 것 같습니다. 테스트는 그대로 작동하지만 웹 리소스에서 응답을 가져올 수 있는지 궁금합니다. 204이 반환 된

curl -i -X DELETE /webapi/deletesomestuff/delete?FT=From+Test 
HTTP/1.1 204 No Content 
Server: Apache-Coyote/1.1 
Content-Type: text/plain 
Date: Mon, 08 Jul 2013 18:11:13 GMT 

: 내 JUnit 테스트에서 ClientResponse를 사용할 때 지금은 항상 200

을 받게 나는 또한 곱슬 삭제 API 호출을 테스트했습니다.

감사합니다.

답변

2

나는이 일을해야 같아요

ClientResponse response = webResourceTest.type(MediaType.TEXT_PLAIN).delete(ClientResponse.class); 
Assert.assertEquals(204, response.getStatus()); 
+0

내가 ClientResponse를 사용 놓친 믿을 수 없어! 고맙습니다. – cbohannon

+0

이것은 응답을 반환하지만 204는 아니고 200을 반환합니다. 좀 더 연구 할 것입니다. – cbohannon

+0

오른쪽. 왜냐하면 내가 컬을 할 때 204 점을 돌려 주었기 때문입니다. 원래의 질문을 업데이트 할 것입니다. – cbohannon