BETA

LaravelでMySQLを使ってPHPUnitテストする時に。

投稿日:2020-02-04
最終更新:2020-02-04

Laravelの機能のPHPUnitでMySQLを使ってテストする場合に
database does not existとかno such tableとか言われた時の対処法

Laravel テスト
公式ドキュメントに書いてあったので、.envをコピーして.env.testingを作った。
変えたのはDB_DATABASEをtest_dbにしただけ。

DB_CONNECTION=mysql  
DB_HOST=db  
DB_PORT=3306  
DB_DATABASE=test_db  
DB_USERNAME=xxxx  
DB_PASSWORD=xxxxxxxxxxxxx  

んで、test_dbを作って、usersテーブルも作成。
vendor/bin/phpunit
を実行していざテスト!
したらdatabase does not existとかno such table'users'とか言われた。

対処法

phpunit.xmlのDB-CONNECTIONとDB_DATABASEを変えたら、ちゃんとusersにデータ入ってたし、テストも通るようになりました。こっちの設定の方が優先なのね。

    <php>  
        <server name="APP_ENV" value="testing"/>  
        <server name="BCRYPT_ROUNDS" value="4"/>  
        <server name="CACHE_DRIVER" value="array"/>  
        <server name="DB_CONNECTION" value="mysql"/>  
        <server name="DB_DATABASE" value="test_db"/>  
        <server name="MAIL_DRIVER" value="array"/>  
        <server name="QUEUE_CONNECTION" value="sync"/>  
        <server name="SESSION_DRIVER" value="array"/>  
    </php>  

もともと

        <server name="DB_CONNECTION" value="sqlite"/>  
        <server name="DB_DATABASE" value=":memory:"/>  

だったところを

        <server name="DB_CONNECTION" value="mysql"/>  
        <server name="DB_DATABASE" value="test_db"/>  

こうしました。

技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

あろはの技術ブログ

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう