Макет данных сеанса Apache для модульного тестирования

#perl #apache #unit-testing

#perl #apache #модульное тестирование

Вопрос:

Я работаю с веб-приложением, которое обычно запускается в mod_perl под Apache. Мы с коллегой пытаемся провести модульное тестирование. Существуют ли какие-либо хорошие инструменты или методы для макетирования сеансов и запросов и т.п., Которые могли бы помочь нам использовать этот код вне контекста веб-сервера?

Ответ №1:

Если вы используете mod_perl 1, есть Apache::FakeRequest, который поставляется с mod_perl. Это не полный макет объекта запроса, поэтому вам нужно добавить несколько собственных методов. Даже больше, если ваш код использует Apache::Request . Еще больше для файлов cookie и загрузок. В основном вы будете тратить много времени на Test::MockObject. К счастью, объектные интерфейсы Apache довольно просты.

Если это вообще возможно, вам следует рассмотреть возможность перехода на платформу на основе Plack (Catalyst, Dancer и т. Д.), Которая обеспечивает гораздо более надежные средства тестирования и отладки. Если вы используете mod_perl2, вам повезло! Легко (относительно mod_perl 1) обернуть приложение mod_perl2 с помощью Plack. Plack ::App::FakeApache выполняет большую часть работы за вас. Вот обсуждение, описывающее различные методы и преимущества.

Комментарии:

1. Существует также Apache2::FakeRequest для mod_perl 2.