2015-12-18 3 views
2

Я пишу модульный тест для своего приложения REST, и я застрял. Когда я использовал параметры заголовка, тесты были очевидны. Но теперь мои запросы находятся в JSON, и я не знаю, как это проверить. Может быть, есть способ сделать это с Джерси или, может быть, с Джексоном. Моя линия, где я получаю ответ от моего ресурса выглядит следующим образом:Как отправить запрос JSON в Jersey-Test

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

Если ПРАВИЛО является ResourceTestRule.

Что мне делать с этим, чтобы сделать POST ресурсом?

ответ

3

После того, как вы звоните 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)); 

Вы должны пройти через все ссылки я для документирования предоставленных для ознакомления с API, по крайней мере, так что вы теперь, что происходит позади всех этих прикованных вызовов метода.

+0

Большое спасибо! Это то, что я искал, все работает так, как я ожидал! – VanDavv

Смежные вопросы