Pocket

CakePHP Test Shell で session関連のエラーが出る際の対応

  • add this entry to hatena bookmark

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 を実行した際にはエラーは出ていなかったので納得できました。

Pocket

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

チェックサイト RSS Feed読者登録はいかがでしょうか?RSS配信中です。