#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.