CakePHP(v2.4.6)で、CakePHP Test Shell で試験する際に、ControllerTestで「session_destroy(): Trying to destroy uninitialized session」が発生した際の対応を記載しています。
エラー内容
Controllerを含む試験を実施した際に、「session_destroy(): Trying to destroy uninitialized session」が発生しました。
以下、例としてAllTestsを実行時の画面出力となります。
$ ./lib/Cake/Console/cake test app AllTests Welcome to CakePHP v2.4.6 Console --------------------------------------------------------------- App : app Path: /var/www/html/app/ --------------------------------------------------------------- CakePHP Test Shell --------------------------------------------------------------- PHPUnit 3.7.29 by Sebastian Bergmann. Configuration read from /var/www/html/phpunit.xml .E................................ Time: 4.45 seconds, Memory: 14.50Mb There was 1 error: 1) LodControllerTest::testIndex session_destroy(): Trying to destroy uninitialized session (以下の画面出力は関係ないので省略します。)
対応内容
色々調べながら、基本に立ち戻る為に、CakePHPのサイトを見てみると、解決につながりそうな情報が載っていました。
「http://book.cakephp.org/2.0/ja/development/testing.html」の「セッションを利用するテストの実行」の箇所です。コマンドラインでセッションを利用するテストを実行する際には「–stderr」フラグが必要なようです。
という事で、「–stderr」フラグを付けて実行するとエラーは表示されなくなりました。以下、実行時の画面出力結果です。
$ ./lib/Cake/Console/cake test app AllTests --stderr Welcome to CakePHP v2.4.6 Console --------------------------------------------------------------- App : app Path: /var/www/html/app/ --------------------------------------------------------------- CakePHP Test Shell --------------------------------------------------------------- .................................. Time: 4.57 seconds, Memory: 15.25Mb OK (34 tests, 12 assertions) Generating code coverage report in Clover XML format ... done Generating code coverage report in HTML format ... done $
Web画面から test.php を実行した際にはエラーは出ていなかったので納得できました。