2013-07-08 10 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? Я просто не могу найти способ получить это. Тест работает как есть, но мне просто интересно узнать, возможно ли вытащить ответ из WebResource. Теперь, когда я использую ClientResponse из моего JUnit теста я всегда получать 200.

Я также протестировали УДАЛИТЬ вызов API с завитком:

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 

204 был возвращен.

Спасибо!

ответ

2

Я думаю, это должно работать:

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

Я не могу поверить, что я пропустил с помощью ClientResponse !!! Спасибо, ritesh. – cbohannon

+0

Это возвращает ответ, но возвращает 200, а не 204. Я сделаю еще несколько исследований. – cbohannon

+0

Справа. Это что-то в тесте, потому что, когда я выполняю завиток, я возвращаю 204. Я собираюсь обновить исходный вопрос. – cbohannon