One minute
LaravelのテストでSQLiteからPostgreSQLに変更したらテストが通らなくなる件
はじめに
ローカル環境でのテストでSQLiteを使っていたけど、PostgreSQL固有の機能を使用した実装を行った場合はSQLiteではテストできなくなるのでPostgreSQLに変更したところ、今まで通ってたテストが通らなくなる場合があります。ファイル単体のテストでは通るのに、ファイル指定をせずに一括で行った場合にエラーになるといった現象となります。
対策
対策1
phpunit.xmlのprocessIsolationをtrueにする
processIsolation="true"
対策1を行った後に全体のテストを行うと、以下のエラーとなったケースがあります。
$ vendor/bin/phpunit
PHPUnit 9.5.25 #StandWithUkraine
Warning: Your XML configuration validates against a deprecated schema.
Suggestion: Migrate your XML configuration using "--migrate-configuration"!
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 61 / 1757 ( 3%)
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 122 / 1757 ( 6%)
EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE 183 / 1757 ( 10%)
省略
EEEEEEEESerialization of 'Illuminate\Http\Testing\File' is not allowed
対策2
phpunit.xmlのbackupStaticAttributesをtrueにする(その場合、processIsolationはfalseで良い)
backupStaticAttributes="true"
Read other posts