Тестування з сесіями

Дата оновлення перекладу 2022-11-12

Тестування з сесіями

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());