読者です 読者をやめる 読者になる 読者になる

グローバル変数の保存や復元

PHPUnit

PHPUnitアノテーションのドキュメントを読んでいて知ったが、PHPUnitには各テストケースの実行前後にグローバル変数を保存・復元してくれる機能があるらしい。

次の例では、"@backupGlobals enabled"にするとtestBは失敗するが、"@backupGlobals disabled"にするとtestBは成功する。

<?php

/**
 * @backupGlobals disabled
 */
class MyGlobalTest extends PHPUnit_Framework_TestCase
{
    public function testA()
    {
        $GLOBALS['spam'] = 'SPAM';
        $this->assertEquals($GLOBALS['spam'], 'SPAM');
    }

    /**
     * @depends testA
     */
    public function testB()
    {
        $this->assertEquals($GLOBALS['spam'], 'SPAM');
    }
}

実際は、復元機能有効のデフォルトの設定をそのまま使うだろうから、@backupGlobalsを使う機会は少ないと思うが、各テストケース間で副作用があることを少なくする仕組みがあるってことがlimeとかと比べてPHPUnitの良いところだと思う。