###前提・実現したいこと
illuminate/database + PHPUnit でデータベースを使ったユニットテストを書こうとしています。
その際、PDOのエラーが発生しました。
###発生している問題・エラーメッセージ
PDOException: You cannot serialize or unserialize PDO instances
###該当のソースコード
php
1use Illuminate\Database\Capsule\Manager as Capsule; 2 3... 4... 5 6public static function setUpBeforeClass() 7{ 8 Capsule::schema()->create('articles', function ($table) { 9 $table->increments('id'); 10 $table->string('title'); 11 $table->string('detail'); 12 $table->timestamps(); 13 }); 14} 15 16... 17...
↑のように setUpBeforeClass
でテーブル作成処理を書くと、最初の何でもないテストでこけました。
###試したこと
エラーコードでとりあえず調べると、以下の stack が近いかなぁと思いました。
Keep getting “You cannot serialize or unserialize PDO instances” in PHPUnit using PHPStorm
そこで、phpunit.xml に backupGlobals="false"
を追加することでテストは通るようになりました。
英語がちょっとよくわかんなくて ... 何なんだろうなぁという気持ちです。
ご助力お願いします!
###補足情報(言語/FW/ツール等のバージョンなど)
phpunit と php のバージョン
$ vendor/bin/phpunit --version PHPUnit 5.7.21 by Sebastian Bergmann and contributors. $ php -v PHP 5.6.22 (cli) (built: May 26 2016 15:44:55)
illuminate/database : ^4.0
Keep getting “You cannot serialize or unserialize PDO instances” in PHPUnit using PHPStorm
↑翻訳
私はついにそれを理解した!何らかの理由でテスト環境変数を設定しても何の効果もありませんでした。
phpunit.xml設定を作成し、テストパラメータを定義し、Phpstormでリファレンスを作成することによって、私は最終的にテストを実行することができました。
参考までに、これは私のphpunit.xmlの内容でした
これ以降も PHPStorm について語ってるので、関係ないっぽいんでしょうか ... ?
phpunit.xml はたまたまだった可能性が ... ?