Pull to refresh

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

Reading time1 min
Views3.9K
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:
Hubs:
+2
Comments2

Articles

Change theme settings