LoginSignup
1
0

More than 5 years have passed since last update.

PHP7+PHPUnitで自前のセッションハンドラクラスのテストを書く

Posted at
  • セッションハンドラを自作した
  • セッションIDが更新されるかとか、古いセッションがちゃんと破棄されるかとかテストしたい
  • PHPUnitの@runInSeparateProcessアノテーションをつければテストできるよ

サンプルコード

<?php

class MySessionHandlerTest extends PHPUnit\Framework\TestCase
{
    /**
     * @runInSeparateProcess
     */
    public function testCreateWriteAndSave()
    {
        // TODO 初めてアクセスした時にセッションが生成されて保存されるテスト
        // @runInSeparateProcess を指定しているので、テスト終了後に自動的にsaveされる
    }

    /**
     * @runInSeparateProcess
     * @depends testCreateWriteAndSave
     */
    public function testLoadReWriteAndSave()
    {
        // @depends を指定しているので、testCreateWriteAndSave() の結果を受けてテストが実行される
        // TODO 2回目にアクセスした時に、セッションIDが付け替えられるテスト
        // TODO 前回のセッションデータがロードできるテスト
        // TODO セッションデータが上書きできるテスト
        // @runInSeparateProcess を指定しているので、テスト終了後に自動的にsaveされる
    }

    /**
     * @runInSeparateProcess
     * @depends testLoadReWriteAndSave
     */
    public function testReLoadAndClear()
    {
        // @dependsを指定しているので、testLoadReWriteAndSave() の結果を受けてテストが実行される
        // TODO 前回のセッションデータをロードしてクリアするテスト
        // @runInSeparateProcess を指定しているので、ここでプロセスが終了し自動的にsaveされる
    }

    /**
     * @runInSeparateProcess
     * @depends testReLoadAndClear
     */
    public function testDestroy()
    {
        // @dependsを指定しているので、testReLoadAndClear() の結果を受けてテストが実行される
        // TODO 前回のセッションデータがクリアされているテスト
        // TODO サーバサイドのセッションを破棄するテスト
        // @runInSeparateProcess を指定しているので、ここでプロセスが終了し自動的にsaveされる
    }

    /**
     * @runInSeparateProcess
     * @depends testDestroy
     */
    public function testDestroyed()
    {
        // @dependsを指定しているので、testDestroy() の結果を受けてテストが実行される
        // TODO セッションが残っていないことを確認するテスト
    }
}
1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0