Professional Documents
Culture Documents
Laravelで始めるテスト生活
Laravelで始めるテスト生活
@bmf_san
@Laravel JP Conference 2019
2019/02/16
自己紹介
@bmf_san
Software engineer
今日話すこと
• What?
• Laravelで機能テスト書くのはいいぞ!
• 簡単に始めやすい環境
• 分かりやすいAPI(テストメソッド)
• Who
• テストかいたことない人
• 書いた事ある人はこれから書こうとする人のために・・
機能テスト is 何?
• システムがユーザーからみた仕様通り動くか確認する
• 結合テストの一方式
• ブラウザでの手動テストに似ている
• →テスト書いたことない人でも取り組み易いはず
なぜLaravelで機能テストを始めるのか?
• 機能テストAPIが充実
• Illuminate\Foundation\Testing
• Github - laravel/browser-kit-testing
• 5.4くらいから別パッケージになってしまった
• 5.4∼ならLaravel Dusk使ったほうがよいかも
Laravelで機能テストを始める
• 環境構築(Laravel5.4∼)
• テスト用DBセットアップ
• config/database.php
• phpunit.xml
• .env
• 5.4~の場合
リポジトリ
• 雑に機能テストを体感できそうな環境つくっておい
た
• Github - bmf-san/laravel-test-handson
テストを書いてみる
• Github - bmf-san/laravel-test-handson
• ユーザー登録ができる
• ログインができる
• 記事の作成ができる
• 記事の編集ができる
• 記事の削除ができる
• etc …
ユーザー登録の機能テスト
/register
正しく入力して送信すると、/homeにリダイレクト
ユーザー登録の機能テスト
/home
ユーザー登録の機能のテスト
ログインの機能テスト
/login
正しく入力して送信すると、/homeにリダイレクト
ログインの機能テスト
/home
ログインの機能のテスト
記事作成の機能テスト
/post/create
ログインしていないとアクセスできないページ
正しく入力して送信すると、/postにリダイレクト
記事作成の機能テスト
/post
記事作成の機能テスト
その他のAPI
click リンクをクリックしときのリクエスト・レスポンスを検証できる
ラジオボタンまたはドロップダウンリストの項目を選択したときの
select
検証
check チェックボックスの項目を選択したときの検証
uncheck チェックボックスの項目を非選択にしたときの検証
attach ファイルインプットにファイルをアタッチしたときの検証
便利ツール
• Laravel TestTools
• Chrome extension
• https://chrome.google.com/webstore/detail/
laravel-testtools/
ddieaepnbjhgcbddafciempnibnfnakl
便利ツール
入力・操作すると→
←テストコードが自動で生成される
まとめ
• Laravelは機能テストが書きやすい
• 別パッケージ(browser-kit-testing)になったが、便利で分かりやすいAPIが用意されている
• browser-kit-testingを使わなくともある程度のAPIは本体に残っている
• 簡単なDOM検証くらいならできるはず
• 5.4∼ならDuskという選択もある
• 書きやすい機能テストから始めるとテストに慣れる(と思う)
• プログラムをより詳細にテストするコード(単体テストとか)が欲しくなってくる
• 自然と段階的に (デバッグとか繰り返していると)テストの書き方や必要性を体感する
• テストがわからなければまず機能テストを書いてみるのが良いかもしれない
おわり