24 November 2014

PHPixie Illusion — простой mock HTTP сервер для ваших тестов

Website developmentPHPWeb services testing
image
Вышел еще один полезный инструмент для тестирования, PHPixie Illusion.
Если ваше приложение зависит от внешних API то вы наверняка сталкивались с проблемой как представить их в своих тестах. Как раз эту проблему и решает Illusion. Она создает отдельный HTTP сервер на указанном порте и позволяет вам легко управлять его роутами и результатами включая HTTP заголовки. И
все это предельно просто:

//Создаем сервер и клиент
$illusion = \PHPixie\Illusion::start($port = 4747);
 
//Добавляем роут и получаем его ссылку
$url = $illusion->route('/pixie/fairy', 'Trixie');
 
//И теперь
echo file_get_contents($url); // 'Trixie'
 
//Также можно задавать HTTP метод роута
//и заголовки ответа
$headers = array('Content-Type: text/plain');
$url = $illusion->route('/pixie', 'PHPixie', 'GET', $headers);

//Для остановки сервера
$client->stopServer();
//но сервер останавливается автоматически
//в деструкторе клиента


Как это работает ?

Довольно просто. В отдельном процессе запускается немного модифицированный StupidHTTP сервер, к которому добавляются два сокета для перекидывания уведомлений с клиентом. Получив соответствующую команду сервер добавляет роут к своей конфигурации.

Надо заметить что поскольку сервер получает отдельный процесс возможный вариант когда главный поток закончиться а сервер останется висеть ( например при исключении ). Чтобы избежать такого поведения можно поставить вызов к stopServer() в обработчик исключений в вашем тесте.
Tags:phpixietestmockphp
Hubs: Website development PHP Web services testing
+2
3.7k 32
Comments 2
Popular right now