MyTetra Share
Делитесь знаниями!
Как получить информацию о заголовке и посмотреть переменные сессии при тестировании в Laravel 5.5
30.07.2019
19:36
Текстовые метки: php, laravel, test, тестирование, тест, заголовок, сессия, переменные, значения, header, headers, session
Раздел: Компьютер - Программирование - Язык PHP - Laravel - Тестирование в Laravel

Иногда при создании и отладке тестов нужно видеть, что отвечает сервер. Например, нужно понять что прописано в заголовке ответа или нужно посмотреть, что находится в переменных сессии.


Часто это необходимо делать, если тестируется какая-либо форма, у которой стоят всяческие проверки, перенаправляющие на страницы с пробрасыванием массива ошибок через метод withErrors(), или с передачей предыдущего ввода через метод withInput().


Ниже дан код, который позволяет прямо в коде теста вывести на консоль состояние заголовков и сессии:



$data['name']='Vasya';

$data['email']='vasya@mail.ru';

$response = $this->post('/sendEmail');

echo "\n".'Headers'."\n";

print_r($response->headers->all());


echo "\n".'Session'."\n";

print_r($response->getSession());



После того, как стало понятно, что не так в тесте, данный вывод нужно не забыть закомментировать.


Метод $response->getSession() не всегда может присутствовать в объекте $response. Например, если при проверке ввода не было обнаружено никаких ошибок, которые бы передавались через сессию, то и данных сессии в ответе может не оказаться. И будет получена ошибка:



BadMethodCallException: Method getSession does not exist.



Это очень странно, ведь сессия существует всегда, в ней хотя бы хранится ключ CSRF, и почему так происходит, надо разбираться дальше.



Так же в этом разделе:
 
MyTetra Share v.0.52
Яндекс индекс цитирования