Testing with Sessions

Symfony is designed from the ground up with code-testability in mind. In order to test your code which utilizes sessions, we provide two separate mock storage mechanisms for both unit testing and functional testing.

Symfony は、コードのテスト容易性を考慮してゼロから設計されています。セッションを利用するコードをテストするために、単体テストと機能テストの両方に 2 つの個別のモック ストレージ メカニズムを提供します。

Testing code using real sessions is tricky because PHP's workflow state is global and it is not possible to have multiple concurrent sessions in the same PHP process.

PHP のワークフロー状態はグローバルであり、同じ PHP プロセスで複数の同時セッションを持つことはできないため、実際のセッションを使用してコードをテストするのは注意が必要です。

The mock storage engines simulate the PHP session workflow without actually starting one allowing you to test your code without complications. You may also run multiple instances in the same PHP process.

モック ストレージ エンジンは、PHP セッション ワークフローを実際に開始せずにシミュレートし、コードを簡単にテストできるようにします。同じ PHP プロセスで複数のインスタンスを実行することもできます。

The mock storage drivers do not read or write the system globals session_id() or session_name(). Methods are provided to simulate this if required:

モック ストレージ ドライバは、システムの globalssession_id() または session_name() を読み書きしません。必要に応じて、これをシミュレートするメソッドが提供されています。
  • getId(): Gets the session ID.
    getId(): セッション ID を取得します。
  • setId(): Sets the session ID.
    setId(): セッション ID を設定します。
  • getName(): Gets the session name.
    getName(): セッション名を取得します。
  • setName(): Sets the session name.
    setName(): セッション名を設定します。

Unit Testing

For unit testing where it is not necessary to persist the session, you should swap out the default storage engine with MockArraySessionStorage:

セッションを永続化する必要がない単体テストでは、デフォルトのストレージ エンジンを MockArraySessionStorage に交換する必要があります。
1
2
3
4
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\MockArraySessionStorage;

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

Functional Testing

For functional testing where you may need to persist session data across separate PHP processes, change the storage engine to MockFileSessionStorage:

個別の PHP プロセス間でセッション データを永続化する必要がある機能テストでは、ストレージ エンジンを MockFileSessionStorage に変更します。
1
2
3
4
use Symfony\Component\HttpFoundation\Session\Session;
use Symfony\Component\HttpFoundation\Session\Storage\MockFileSessionStorage;

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