0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

【Laravel】データベーステストで本番用データベースを汚さない方法。

Last updated at Posted at 2022-08-06

データベーステストのやり方がわからなかったので、アウトプット。

1.Mysqlに入りデータベースを作成

2.phpunit.xmlを開いて、APP_ENVの値をtestingに変更。こうすることで.envファイルに本番用のmysqlがあってもテストではこっちが使用される.
3.テスト作成コマンド

php artisan make:test [テストケースクラス名] --unit

RefreshDatabaseトレイトとは
テストごとにデータベースをリセットしてくれる便利なトレイト。

  • マイグレーションを実行しなくても、勝手にテスト実行の際実行してくれる。
  • テスト終了したら削除してくれる(カラムだけ削除される。テーブルは削除されない)
  • use RefreshDatabase;をすることでつかうことができる。↓
<env name="Hoge_DATABASE" value="test_hoge"/>



use Illuminate\Foundation\Testing\RefreshDatabase;

class hogeControllerTest extends TestCase
{
    use RefreshDatabase;
    //データベースを自動でマイグレーションしてくれる

.envをコピーして、.env.testingを作成。

  • これは書かないと本番用のDBのデータが消える可能性がある。
    cp .env .env.testing 
    APP_KEY=
    の部分を空白にしてからファイルをコピー

  • APP_ENV=localからAPP_ENV=testingに変更

  • DB_DATABASE=これをつくったDBの名前に変更

  • テスト用データベースに本番データベースを反映

php artisan migrate --env=testing
  • キーをジェネレート
$php artisan key:generate --env=testing

あとはテスト書くだけ。

参考サイト

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?