Тестирование с сессиями

Тестирование с сессиями

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

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

Имитиационные механизмы хранения симулируют рабочий процесс PHP сессии не запуская её на самом деле, что позволяет вам тестировать код без осложнений. Вы также можете запускать несколько экземпляров в одном и том же PHP процессе.

Имитационные драйверы хранения не читают и не записывают глобальные данные системы session_id() или session_name(). Методы предоставляются для такой имитации, если это необходимо:

  • getId():
    Получает ID сессии.
  • setId(): Устанавливает ID сессии.
  • getName(): Получает имя сессии.
  • setName(): Устанавливает имя сессии.

Модульное тестирование

Для модульного тестирования, где нет необходимости сохранять сессию, вам стоит просто заменить меаханизм хранения по умолчанию на MockArraySessionStorage:

1
2
3
4
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;
use Symfony\Component\HttpFoundation\Session\Session;

$session = new Session(new MockArraySessionStorage());

Функциональное тестирование

Для функционального тестирования, где вам может понадобиться сохранять данные сессии через различные отдельные PHP процессы, просто замените механизм хранения на MockFileSessionStorage:

1
2
3
4
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage;

$session = new Session(new MockFileSessionStorage());