java - 如何在 Jersey-Test 中发布 JSON 请求

标签 java json jersey

我正在为我的 REST 应用程序编写单元测试,但遇到困难。当我使用 header 参数时,测试很明显。但是现在,我的请求是 JSON 格式的,我不知道如何测试它。也许有一种方法可以用 Jersey 或 Jackson 来做。 我从资源中获得响应的行如下所示:

final Response response = RULE.getJerseyTest().target("/actors/1").request().post(/* json request */);

RULE 是 ResourceTestRule。

我应该怎么做才能让它发布资源?

最佳答案

一旦您调用 request() WebTarget 上( target("/actors/1") ),你会得到一个 Invocation.Builder , 它扩展了 SyncInvoker .如果您查看所有 post() SyncInvoker 上的方法,你会看到他们都取 Entity

  • Response post(Entity<?> entity)
  • <T> T post(Entity<?> entity, Class<T> responseType)
  • <T> T post(Entity<?> entity, GenericType<T> responseType)

如果您查看 Entity类,你只会看到一堆静态方法,比如 form , html , json , xml , text .只需将您的实体 (JSON POJO) 传递给 json创建 Entity 的方法类型 application/json .

...request().post(Entity.json(yourPojo));

您应该浏览我提供的所有 javadoc 链接以熟悉 API,至少这样您就知道所有这些链式方法调用背后发生了什么。

关于java - 如何在 Jersey-Test 中发布 JSON 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34356549/

相关文章:

json - Spring 启动 JsonMappingException : Object is null

java - JAX-RS 和 Jersey : SEVERE: Mapped exception to response: 501

java - java中是否有用于hibernate中延迟获取的yield return?

java - 我应该/如何将我的 JWT token 存储在 redis 中,以便我可以看到当前的用户 session ?

java - 如何使用 Retrofit 2 解析动态 JSON(+嵌套对象)

javascript - 无法在 ionic 模板中显示成功的 angularjs $http 从本地服务器获取响应

java - 泽西客户端 : Cache-Manager for Conditional GET?

java - 使用InputStream下载大文件

java - Maven命令下载最新版本的jar

java - 覆盖父类(super class)构造函数