我正在为我的REST应用程序编写单元测试,而且我被卡住了。当我使用标头参数时,测试很明显。但现在,我的请求是JSON,我不知道如何测试它。也许有一种方法可以用泽西岛或杰克逊做到这一点。 我从我的资源获得响应的行如下所示:
final Response response = RULE.getJerseyTest().target("/actors/1").request().post(/* json request */);
RULE是ResourceTestRule。
如何使它成为POST资源呢?
答案 0 :(得分:4)
在WebTarget
(target("/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
课程,您会看到一堆静态方法,例如form
,html
,json
,xml
,{ {1}}。只需将您的实体(JSON POJO)传递到text
方法即可创建json
类型的Entity
。
application/json
您应该浏览我提供的所有javadoc链接以熟悉API,至少让您知道所有这些链式方法调用背后发生了什么。