前提・実現したいこと
ドットインストールの講座でLaravelで簡易掲示板を作成しました。そして、応用としてPHPUnitで単体試験コードを製造しようと試みましたが、Form処理のバリデーションチェックの方法で詰まっているところがあります。
講座では、FormRequestを用いて、フォーム処理のバリデーションチェックを分割しております。なので、単体試験コードには、createメソッドまたはmakeメソッドにテーブルに登録する配列と、FormRequestで定義したルールを適応させて動作させたのですが、createメソッドですと、データの有無に関係なくダミーデータが入るようになっており、バリデーションに引っかかるような処理の作り方がうまくイメージできません。
以下は該当箇所を抜粋したものです。
該当のソースコード
PHP
1バリデーションチェックを行っているファイル 2~省略~ 3class PostRequest extends FormRequest 4{ 5 ~省略~ 6 public function rules() 7 { 8 return [ 9 'title' => 'required|min:3', 10 'body' => 'required' 11 ]; 12 } 13 ~省略~ 14}
PHP
1PHPUnit 2 3class PostTest extends TestCase 4{ 5 use RefreshDatabase; 6 7 public function testExample() 8 { 9 $posts = [ 10 'title' => 'title 1', 11 'body' => 'body1body1' 12 ]; 13 14 $rules = new PostRequest(); 15 $rule = $rules->rules(); 16 17 factory(Post::class)->create($post, $rule); 18 } 19}
試したこと
HTTPテストはできまして、createメソッドで作成したダミーデータのページにアクセスするところまではできました。ただ、バリデーションチェックを行うところになると、バリデーションチェックが無視されて、そのままダミーデータが登録できてしまう問題が起きました。
サイトや書籍でいろいろ調べたのですが、visitメソッドがLaravel5.3以降では廃止されているため、該当する記事がなく、どのような観点から調べてよいかわからなくなっている状態です。
公式リファレンスをみたのですが、作成したテストファイルを読込まなかったような状態で、どのようにテストしたらよいか不明になりました。
https://readouble.com/laravel/5.6/ja/dusk.html
試験観点レベルで見直すべきなのかわからなくなってしまいましたので、御教授いただけると幸いです。
以上です。よろしくお願いします。
補足情報(FW/ツールのバージョンなど)
xampp:v3.2.2
Laravel:5.6