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

时间:2015-12-18 13:13:55

标签: java json jersey

我正在为我的REST应用程序编写单元测试,而且我被卡住了。当我使用标头参数时,测试很明显。但现在,我的请求是JSON,我不知道如何测试它。也许有一种方法可以用泽西岛或杰克逊做到这一点。 我从我的资源获得响应的行如下所示:

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

RULE是ResourceTestRule。

如何使它成为POST资源呢?

1 个答案:

答案 0 :(得分:4)

WebTargettarget("/actors/1"))上致电request()后,您会返回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课程,您会看到一堆静态方法,例如formhtmljsonxml,{ {1}}。只需将您的实体(JSON POJO)传递到text方法即可创建json类型的Entity

application/json

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