2024/12/22 PHP Conference 2024にて、「テストコード書いてみませんか?」というタイトルで発表を行いました💡 https://speakerdeck.com/onopon/tesutokodoshu-itemimasenka https://fortee.jp/phpcon-2024/proposal/f1473725-d50a-4fae-8045-d13ec9e49b05
本リポジトリは、テストコードの書き方を学びたい人向けのチュートリアルリポジトリです。
主に、下記の方向けとなります。
- テストコードはなんとなく知っているけど、どのように書いていけばいいかがわからない
- プロジェクトでテストコードを導入するために、チームみんながテストコードを書ける状態を作りたい
テストコードそのものを知らない方は、 WHAT_IS_TESTCODE.md をご一読ください。
このリポジトリのソースコード内の至るところにクイズ形式で散りばめております。
クイズの一覧は、 QUESTIONS.md に記載しております。
また本クイズを進める上で必要となるディレクトリの構造は、 DIRECTORY_STRUCTURE.txt をご確認ください。
大きく下記の2ページが用意されています。
ログインページです。
ユーザIDとパスワードの入力フォームが用意されております。
ユーザID、パスワードを入力、Loginボタンを押下後、正しい場合は http://localhost:8000/ に遷移します。
ユーザIDが存在しない、パスワードが誤っている場合は本urlにリダイレクトされます。
ログインユーザのアカウント情報ページです。
ユーザ名、ユーザID、役職、誕生日、星座が表示されます。
Logoutボタンを押下すると、 http://localhost:8000/user/login に遷移します。
- Dockerコマンドを利用できる状況にしてください
- 下記コマンドを実行してください。必要なdockerを立ち上げ、初期準備(migrationやテストユーザの作成など)をしてくれます。
sh ./initial_run.sh
local, testingの2つの環境を作成することができます。
ブラウザ上でページの動作確認を行うために利用します。
CUI上で、用意したテストの実行を行うために利用します。
app, db, phpunitの3つのdockerが立ち上がります。
local環境で利用します。ページの挙動をブラウザ上で確認できるようにするためのdockerです。
local, testing環境で利用します。
利用するdbが環境により異なり、
local環境ではtc_practiceが利用され、
testing環境ではtc_practice_testingが利用されます。
testing環境で利用します。CUI上でテストが実行できるようにするためのdockerです。
下記コマンドを実行してください。
docker compose up -d
sh ./initial_run.sh でも立ち上がってはくれますが、様々な処理を挟むため時間がかかります。
下記コマンドを実行してください。
docker compose down
用途に応じて書きのコマンドを実行してください。
コンテナから抜ける場合は、 exit を実行してください。
docker compose exec app bash
docker compose exec db bash
mysql -uroot -proot
docker compose exec phpunit bash
./vendor/bin/phpunit
いくつかコマンドを用意しました。
状況に応じて是非活用してください。
./mysql と実行すると、mysqlに接続できます。
./phpunit と実行すると、全テストを順番に実行していきます。
./phpunit tests/Unit/Librariees/UserUtilTest.php のように指定したファイルのみテストを実行することもできます。
phpunit docker上でbashを実行できるようになります。 exit と入力することで本bashから抜けることができます。
※ 本コマンドは docker compose exec phpunit bash 上で行ってください。
任意のユーザを作成することができます。 実行されるコマンドの中身は、
app/Console/Commands/CreateUser.php
をご確認ください。 オプションを与えることで、初期値意外のデータで作成することができます。
ex)
php artisan create:user --loginId=hoge