Open7
LaravelでTDDチュートリアル
参考書
参考リポジトリ
実行環境
Laravel Framework 5.5.50
初期の不要ファイル削除
rm -rf database/migrations/*.php
rm -rf tests/Unit/*.php
rm -rf tests/Feature/*.php
テストファイル作成
docker exec -it php php artisan make:test ReportTest
//test実行
docker exec -it php php vendor/bin/phpunit
//テストのメソッド名は、頭にtestをつける。またはメソッドコメントに @test
アノテーションをつける
public function test_api_customersでGETでアクセスできる()
{
$response->assertStatus(200);
}
// @test アノテーションをつけたとき
/**
* @test
*/
public function api_customersでGETでアクセスできる()
{
$response->assertStatus(200);
}
TDD = Test Driven Development = テスト駆動開発
開発時にデータの干渉を避けるためテスト専用DBをつくる
DBコンテナのmysqlにログイン
docker exec -it mysql mysql -u root -p
// =>パスワードはdocker-composeに定義したのを入力
テスト用DB を作成
create database test_database;
テスト実行時に test_database
を使うように src/phpunit.xml に追記する
<env name="QUEUE_DRIVER" value="sync"/>
+ <env name="DB_DATABASE" value="test_database"/>
//2つのテーブルのマイグレーション、モデル、ファクトリの作成
docker exec -it php php artisan make:model Customer -f -m
docker exec -it php php artisan make:model Report -f -m
doctrine/dbal でモデルのphpDocsを自動生成 *バージョンでエラー
必要なパッケージをインストール
docker-compose exec php composer require doctrine/dbal
docker-compose exec php composer require barryvdh/laravel-ide-helper
初期データの投入
シーダーファイル作成
docker exec -it php php artisan make:seeder TestDataSeeder
シーダーファイル database/seeds/TestDataSeeder.php
を編集
シーダー実行
docker exec -it php php artisan db:seed --class=TestDataSeeder