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