データベーステストのやり方がわからなかったので、アウトプット。
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
あとはテスト書くだけ。
参考サイト