Ruby on Rails チュートリアルで詰まった話(7章)
Ruby on Rails チュートリアルをゆっくりと進めています。
以下、自分の学習の記録として。
詰まった箇所
7.3.4 失敗時のテスト 演習の1
リスト 7.20で実装したエラーメッセージに対するテストを書いてみてください。どのくらい細かくテストするかはお任せします。リスト 7.25にテンプレートを用意しておいたので、参考にしてください。
詰まった原因
Google Chromeで動的なページのソースを見たいときには
右クリックから「ページのソースを表示」ではなくて「検証」。
(すぐ下に見えていてもハマっているときは気づかないものですね…)
自分の答え
#Signup失敗時のテスト test "invalid signup information" do get signup_path #POST先が正しいかのテスト assert_select "form[action=?]", signup_path #不正なUserデータをPOSTしてテスト assert_no_difference 'User.count' do post signup_path, params: { user: { name: "", email: "user@invalid", password: "foo", password_confirmation: "bar" } } end assert_template 'users/new' assert_select "div#error_explanation" assert_select 'div.field_with_errors' assert_select 'ul' do assert_select 'li', 'Name can\'t be blank' assert_select 'li', 'Email is invalid' assert_select 'li', 'Password confirmation doesn\'t match Password' #パスワードの文字数制限が変わった時のため、文字数部分のエラーメッセージより前で部分一致を検証 assert_select 'li', /Password is too short*/ end end
上手い人だともっと奇麗に書くのかもしれませんが…