Подтвердить что ты не робот

Задайте параметры запроса на тестовом вызове в Джерси

У меня есть Java-сервлет на основе Java:

@Path("foo")
class Foo {
  @GET
  @Path("bar")
  public Response bar(@QueryParam("key") String value) {
    // ...
  }
}

Я могу назвать его в Tomcat просто отлично, как:

http://localhost:8080/container/foo/bar?key=blah

Однако, в моем JerseyTest, используя Grizzly, он неправильно обрабатывает параметры. Этот тестовый пример возвращает ошибку 404:

@Test
public void testBar() {
  final Response response = target("foo/bar?key=blah").request().get();
}

Я подозреваю, что проблема заключается в поиске ресурса с именем foo/bar?key=blah вместо того, чтобы пытаться передать key=blah ресурсу в foo/bar. Если я передаю только "foo/bar" в target(), я получаю 500, так как код генерирует исключение для нулевого параметра.

Я просмотрел документацию по тестированию в Джерси и некоторые примеры, и я нашел некоторые загадочные вещи, которые могли бы быть переданы параметрам в GET, но ни один из них не выглядел так, как будто он присваивал значения параметрам, поэтому я wasn ' t положительно, как я буду использовать его.

Как передать значение для этого параметра?

4b9b3361

Ответ 1

JavaDoc to WebTarget.queryParam() должен дать вам ответ на вашу проблему. В основном вам нужно преобразовать свой код в нечто вроде:

target("foo/bar").queryParam("key", "blah").request().get()