LaravelでのUnitTestを始めよう
TestUnitを始める上で勢いで始めないように設計しましょう。
・基本的に読むべきこと
https://phpunit.readthedocs.io/ja/latest/
https://readouble.com/laravel/5.5/ja/testing.html
アンチパターンとベストプラクティス
https://www.ryuzee.com/contents/blog/3982
-
テストの中で何もテストしていない
書きかけの場合は、テストに未完成の印をつけるなどしましょう
https://phpunit.readthedocs.io/ja/latest/incomplete-and-skipped-tests.html -
1つのテストメソッドの中で色々テストし過ぎている
-
引数に真にしたい条件を与えてなんでもassertTrueでチェックしている
@dependsアノテーションを使ってテストの実行順序を制御しつつ分割を行うべきです。 -
テストデータのパターンが複数あるのを理由に1つのテストの中で順番に検証する
引数は検証対象の値やオブジェクトであるべきで、テストの意図を伝わりやすくすべきです。 -
テストが分類されていない。適切なフォルダ構成になっていない
解決策は適切にフォルダに分けて配置したり、テストスイートをつくったり、@groupアノテーションを使ってテストを分類します。
LaravelでPhpUnitを使う
LaravelでPHPUnitを使用する際、デフォルトの状態であればtests/TestCase.phpが作成されており、全てのテストクラスはこれを継承してテストを行います。
参考:https://memorandumrail.com/laravel-phpunit/
LaravelではデフォルでhFeatureとUnitというディレクトリに分かれていて、Feature には機能テスト、Unit にはユニットテストを書く構成になっています。
関数単位、クラス単位の場合はUnit
Mockeryを使うと疑似モックを作ってくれるので便利らしい。