Имитировать объект HTTPRequest и HTTPResponse в Java - PullRequest
0 голосов
/ 20 мая 2010

Как мне подражать HTTPServletRequest и HTTPServletResponse объект. Причина в том, что я хочу проверить поведение некоторых сервлетов.

Я знаю, что JUnit, вероятно, предоставляет эту функциональность, но я не знаю, как ее использовать (скоро узнаю), и мне нужно сделать это достаточно быстро.

HTTPServletRequest и HTTPServletResponse являются обоими интерфейсами, поэтому они не могут быть созданы. Существует HttpServletRequestWrapper, который реализует HttpServletRequest, но у него, похоже, нет методов типа setParameter(), а HttpServletResponse, похоже, вообще не имеет реализующих классов.

Как я могу проверить свой код, передав подходящий объект HttpServletRequest и проверив, что полученный HttpServletResponse объект соответствует ожидаемому?

Ответы [ 2 ]

2 голосов
/ 20 мая 2010

Тот факт, что это интерфейс, облегчает имитацию: это насмешливые финальные классы, это сложно.

class MyHttpServletRequest implements HttpServletRequest
{
  //whatever
}

class MyHttpServletResponse implements HttpServletResponse
{
  //whatever
}


doGet(new MyHttpServletRequest(),
      new MyHttpServletResponse())

Создание подклассов HttpServletRequestWrapper может быть проще, но это не обязательно. Я бы посмотрел на переопределение getParameter и getParameterMap

1 голос
/ 20 мая 2010

Создать фиктивный объект:

class MyDummyRequest implements HTTPServletRequest{
    //implement your own methods, for example:
    public Map getParameterMap(){
        Map myMap = new HashMap();
        //put the params you need inside myMap
        return myMap;
    }
}

Если вы хотите избежать создания фиктивных объектов для целей тестирования, вы можете обратиться к одной из доступных mocking библиотек для Java, например, Mockito.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...