[英]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资源?
一旦在WebTarget
( target("/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
类,你会看到一堆静态方法,比如form
, html
, json
, xml
, text
。 只需将您的实体(JSON POJO)传递给json
方法即可创建application/json
类型的Entity
。
...request().post(Entity.json(yourPojo));
您应该浏览我提供的所有javadoc链接以熟悉API,至少让您知道所有这些链式方法调用背后发生了什么。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.