【76日目】【1日20分のRailsチュートリアル】【第8章】フラッシュメッセージのテストを作成する
今日は「8.1.5 フラッシュのテスト」から。
8.1.5 フラッシュのテスト
アプリケーションのログインの挙動をテストするために、最初に統合テストを生成します。
生成します。
$ rails generate integration_test users_login invoke test_unit create test/integration/users_login_test.rb
次に、図8.5と図8.6の手順をテストコードで再現する必要があります。基本的な流れを以下に示します。
無効なユーザー情報でログインしようとしたらエラーメッセージが表示されて、
Homeページ移動したらエラーメッセージが表示されないことを確認するテストを作成する。
test/integration/users_login_test.rb
require 'test_helper' class UsersLoginTest < ActionDispatch::IntegrationTest test "login with invalid information" do get login_path assert_template 'sessions/new' post login_path, session: { email: "", password: "" } assert_template 'sessions/new' assert_not flash.empty? get root_path assert flash.empty? end end
テスト実行。
$ bundle exec rake test TEST=test/integration/users_login_test.rb 1 tests, 4 assertions, 1 failures, 0 errors, 0 skips
エラー出ますね。
flash.now
のメッセージは表示した後リクエストが発生したときは消滅するらしいので一度きり、感じなのかな?
app/controllers/sessions_controller.rb
flash.now[:danger] = 'Invalid email/password combination'
テスト実行して問題ないことを確認。
$ bundle exec rake test TEST=test/integration/users_login_test.rb 1 tests, 4 assertions, 0 failures, 0 errors, 0 skips $ bundle exec rake test 23 tests, 48 assertions, 0 failures, 0 errors, 0 skips
サーバー起動して実動作も見てみたけど、ちゃんとHomeページ表示したときはエラーメッセージ消えてました。
$ rails server -b $IP -p $PORT
今日の作業時間は【18分】。
次は「8.2 ログイン」から。