繁体   English   中英

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

[英]How to post a JSON request in Jersey-Test

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

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

RULE是ResourceTestRule的地方。

我应该怎么做才能使它成为POST资源?

一旦在WebTargettarget("/actors/1") request()上调用request() ,就会返回一个Invocation.Builder ,它扩展了SyncInvoker 如果您查看SyncInvoker上的所有post()方法,您将看到它们都采用Entity

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

如果你看一下Entity类,你会看到一堆静态方法,比如formhtmljsonxmltext 只需将您的实体(JSON POJO)传递给json方法即可创建application/json类型的Entity

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

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

暂无
暂无

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

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