Я пытаюсь написать простой тестовый класс, который эмулирует веб-службу RESTful, создавая клиента с помощью метода POST
. Не удалось выполнить assertEquals
, я получил ответ 400 Bad Request
. Я не могу использовать отладчик для отслеживания трассировки стека. Однако консоль сообщает мне следующее ...Как отправить/принять JSON с помощью JerseyTest Framework
INFO: Начальный слушатель, связанный с [localhost: 9998]
INFO: [HttpServer] Начат.
public class SimpleTest extends JerseyTestNg.ContainerPerMethodTest {
public class Customer {
public Customer() {}
public Customer(String name, int id) {
this.name = name;
this.id = id;
}
@JsonProperty("name")
private String name;
@JsonProperty("id")
private int id;
}
@Override
protected Application configure() {
return new ResourceConfig(MyService.class);
}
@Path("hello")
public static class MyService {
@POST
@Consumes(MediaType.APPLICATION_JSON)
public final Response createCustomer(Customer customer) {
System.out.println("Customer data: " + customer.toString());
return Response.ok("customer created").build();
}
}
@Test
private void test() {
String json = "{" +
"\"name\": \"bill\", " +
"\"id\": 4" +
"}";
final Response response = target("hello").request(MediaType.APPLICATION_JSON_TYPE).post(Entity.json(json));
System.out.println(response.toString());
assertEquals(response.getStatus(), 200);
}
}
Вы удивительный человек. Вы только что решили проблему, которая наказывала меня более 6 часов. THANK YOU –
@JasonJavier Спасибо за [MCVE] (http://stackoverflow.com/help/mcve), кстати. Вот как я стараюсь поощрять связанные с Джерси вопросы. Что-то мы можем скопировать и вставить в один класс для тестирования. Даже если вопрос не связан с тестовой базой, включение всех функциональных возможностей в один runnable-тест помогает быстрее определить проблему. Это также помогает OP сузить область проблем, поэтому отладка более сфокусирована. –