やること登録ページを作成して、Threadを新規に登録できるようにする。テストコードこんな感じのコードを書いてみるよ。(本当はログインした)ユーザは、Threadを作成することができる。}factory('App\Thread')->make()は、createと違って、データベースに保存はされないけれども、テストデータのインスタンスを作成してくれる。そのインスタンスをtoArray()でpostの第二引数に渡してあげることで、postリクエストとして渡すことができるみたい。本当はログインしたユーザーが作成できること、というテストを行うんだけれども、認証周りは後回しにすることにしたよ。実装ルーティングの定義はこんな感じ。ThreadController@showより下に投稿の定義を持ってちゃうと、{thread}のせいかうまくいかなかったりする。'ThreadController@show');コントローラーはこんな感じ。ものすごくシンプルだね。}そして、忘れがちだけれどもモデルについても、マスアサイントメント機能を有効にしておくよ。ThreadContoroller@storeのようにリクエストの内容全部をcreateみたいにしていると、リクエストの中に本来さわっちゃいけないname属性をこっそりいれられちゃったりした場合に、意図せずデータがつくられたり、更新されたりやべーよ!ということでこういった機能があるみたいだね。[];}テストの前に実装が終えたので、テストを実行するよ!とする前に、ちょっと寄り道。今回のテストは何をもって成功とればいいんだろう。redirect()リダイレクトしているから、リダイレクトされることいっそのことHTTPステータスコード200ってのも正解はなんだろう、というところだけれども自分もよくわからないんだ。そもそもホワイトボックス的に、最終的なアウトプットだけをみればいいのか、ブラックボックス的なことが必要なのかとかそのへんがまだあんまりわかってないです。作成したThreadが個別ページで見れることというアプローチで成功かどうかを判断するよ。いうことで直したテストコードはこんな感じ。(本当はログインした)ユーザは、Threadを作成することができる。}テストを実行すると、問題なく通りました。登録ページをつくるさて、なんとなくThreadを登録する機能ができあがってきたので、画面をつくっていきます。このへんは慣れてきたのでさくっといきます。スタイルをいろいろあてているけれども、scssは省略しちゃうよ。</form></div>@endsectionこんな感じの画面になりました。Threadを作成する画面ユーザーIDについては、ログイン機能をつくったらつくった人のIDが入ってくるイメージになりますが、今は適当に入力します。試しに投稿してみると、問題なく投稿できることが確認できました。バリデーションを作成する現在の状態で、タイトルなどを空っぽにして投稿すると、タイトルにnullはだめだよ!というエラーでExceptionが発生してしまいます。入力が必須の項目が未入力の場合は、入力してね!ってメッセージを出してあげましょう。なにはともあれはテストコードを先に書きます。}ここで使うのはassertSessionHasErrorsになります。バリデーションに失敗してエラーになったかどうかの判断が、なんでセッションなんだろう、と思いませんか。気になったので調べてみました。説明した通り、Laravelは自動的にユーザーを以前のページヘリダイレクトします。付け加えて、バリデーションエラーは全部自動的にフラッシュデータとしてセッションへ保存されます。GETルートのビューへエラーメッセージを明示的に結合する必要がないことに注目してください。これはつまり、Laravelはいつもセッションデータの中にエラーの存在をチェックしており、見つけた場合は自動的に結合しているからです。公式のバリデーションには上記のことが書いてあります。バリデーションエラーの結果はセッションに書いていて、セッションにそのエラーが書かれていれば$errorsという変数に突っ込んでおくから、View(blade)で使ってね、ということみたいです。!実装ということでバリデーションの実装をしていきます。バリデーションもコントローラーではなくって、フォームリクエストバリデーションというものを利用してみます。ThreadRequestフォームリクエストをこんな感じで書きます。}}コントローラーも、ThreadRequestを使うようにしてあげます。}次回は登録ページにエラーを表示していきたいと思います。(5):登録ページを作成する関連記事2019-01-022018年の振り返りあけましておめでとうございます。風邪が長引いてランニングも勉強もちょっとさぼりぎみ。...2017-11-20Laravelで始めるTDD開発:準備やっちまったぜ。»プロフィール30歳からWebやらなんやらを学び始めた人のブログです。(4)検索はてなブログをはじめよう!konoemarioさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。