【问题标题】:Jersey Restful Testing with Junit使用 Junit 进行 Jersey Restful 测试
【发布时间】:2013-07-08 16:51:49
【问题描述】:

我正在以以下方式测试 DELETE 动词,这似乎工作得很好。

@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 调用的 sn-p。

@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 中提取响应。现在,当我在 junit 测试中使用 ClientResponse 时,我总是收到 200。

我还用 curl 测试了 DELETE 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。

谢谢!

【问题讨论】:

    标签: java junit jersey webresponse


    【解决方案1】:

    我想这应该可行:

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

    【讨论】:

    • 这确实返回了响应,但返回的是 200 而不是 204。我会做更多的研究。
    • 对。这是测试中的东西,因为当我执行卷曲时,我得到了 204 返回。我要更新原来的问题。
    猜你喜欢
    • 2019-01-04
    • 2017-05-12
    • 2023-04-11
    • 2014-05-28
    • 2012-02-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多