简体   繁体   English

Jersey Test Framework 2.5 - 测试POST方法

[英]Jersey Test Framework 2.5 - test POST method

I'm trying to find some manual how to test POST methods using jersey framework, only got examples for GET method. 我试图找到一些手册如何使用jersey框架测试POST方法,只有GET方法的例子。

Here's example: 这是一个例子:

@POST
@Path("add")
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response addUser(JAXBElement<User> user) {

    int code = userService.addUser(user.getValue());
    if (code == 500) {
        return Response.status(500).build();
    }
    return Response.status(code).entity(user).build();

}

Could you please post some POST method test example? 你能发一些POST方法测试例吗? Thank you in advance. 先感谢您。

After research I did it! 经过研究,我做到了!

Here's my solution, it works just fine. 这是我的解决方案,它运作得很好。 And it's rather integration test, but we can write unit tests in similar manner. 而且它是集成测试,但我们可以用类似的方式编写单元测试。

public class RestTest extends JerseyTest{

@Override
protected Application configure() {

    return new Your_Resource_Config(); //Your resource config with registered classes
}

//@Before and/or @After for db preparing etc. - if you want integration tests

@Test
public void addUserTest() {
    User user = new User();
    user.setEmail("user2@mail.com");
    user.setName("Jane Doe");
    user.getUserRoles().getRoles().add("supertester");
    Entity<User> userEntity = Entity.entity(user, MediaType.APPLICATION_XML_TYPE);
    target("users/add").request().post(userEntity); //Here we send POST request
    Response response = target("users/find").queryParam("email", "user2@mail.com").request().get(); //Here we send GET request for retrieving results
    Assert.assertEquals("user2@mail.com", response.readEntity(User.class).getEmail());

}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM