railsチュートリアル第七章 失敗時のテスト
失敗時のテスト
有効、無効のデータどちらでも正常にアプリが動くようにする。
アプリケーションの変更をするたびにテストを繰り返さなければならず大変である。
Railsではフォーム用のテストを書くことができ、こういったプロセスを自動化することができる。
今回は無効の送信をした時に正しい振る舞いについてテストを書いていく。
新規ユーザー登録用の統合テストを生成する
統合テストのファイル名はusers_signup
rails generate integration_test users_signup
無効なユーザー登録に対するテスト
test/integration/users_signup_test.rb
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
test "invalid signup information" do
get signup_path
# signupのページにアクセス
assert_no_difference 'User.count' do
# ユーザー数が変わらないかをテストする
post users_path, params: { user: { name: "",
# ハッシュのハッシュのようになっているように見える
email: "user@invalid",
password: "foo",
password_confirmation: "bar" } }
# postリクエストを送信 フォーム送信をテストする
# データの投稿した後 assert_no_difference で違いを比べるらしい。
end
assert_template 'users/new'
end
end
テストは、ユーザ数を覚えた後にデータを投稿してみて、ユーザ数が変わらないかどうかを検証するテスト
ubuntu:~/environment/sample_app (sign-up) $ rails t
Running via Spring preloader in process 8623
Started with run options --seed 50070
20/20: [==============================] 100% Time: 00:00:01, Time: 00:00:01
Finished in 1.38444s
20 tests, 40 assertions, 0 failures, 0 errors, 0 skips
テスト成功
演習
1.リスト 7.20で実装したエラーメッセージに対するテストを書いてみてください。どのくらい細かくテストするかはお任せします。リスト 7.25にテンプレートを用意しておいたので、参考にしてください。
require 'test_helper'
class UsersSignupTest < ActionDispatch::IntegrationTest
test "invalid signup information" do
get signup_path
# signupのページにアクセス
assert_no_difference 'User.count' do
# ユーザー数が変わらないかをテストする
post users_path, params: { user: { name: "",
# ハッシュのハッシュのようになっているように見える
email: "user@invalid",
password: "foo",
password_confirmation: "bar" } }
# postリクエストを送信 フォーム送信をテストする
# データの投稿した後 assert_no_difference で違いを比べるらしい。
end
assert_template 'users/new'
assert_select 'div#error_explanation'
assert_select 'div.alert'
end
end
ちょっとわからない。 解けなかった。
Author And Source
この問題について(railsチュートリアル第七章 失敗時のテスト), 我々は、より多くの情報をここで見つけました https://qiita.com/masatom86650860/items/c0329646ea9753b75dd6著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .