koya-kudaka / sample_app

0 stars 0 forks source link

HTMLの構造にエラーがあるかテストをするassert_selectを使ってみる #12

Open koya-kudaka opened 4 years ago

koya-kudaka commented 4 years ago

目的 assert_selectを使ってテストする演習があったので、ついでにassert_selectってどう使うのか書いてみるとともに、言語化して自分なりに理解する。

assert_selectとは、、、 assert_selectは、htmlの構造をテストするアサーションメソッド。

webアプリケーションは、適切なhtml文書をブラウザに返すサーバーなので、レスポンスで返すhtmlが予想通りになれば良いということになる。しかし、htmlの文字列を単純に比較するのは問題がある(改行、スペース、タブが含まれているから)ので、assert_selectメソッドを使い統合テストを行う。

koya-kudaka commented 4 years ago

例えば、今回のチュートリアルの演習では、以下のような書き方をする

class UsersSignupTest < ActionDispatch::IntegrationTest

  test "invalid signup information" do
    get signup_path
    assert_no_difference 'User.count' do
      post users_path, params: { user: { name:  "",
                                         email: "user@invalid",
                                         password:              "foo",
                                         password_confirmation: "bar" } }
    end
    assert_template 'users/new'
    assert_select 'div#<CSS id for error explanation>'
    assert_select 'div.<CSS class for field with error>'
  end
  .
  .
  .
end
koya-kudaka commented 4 years ago

まとめると、、 assert_selectはhtml(構造)が正しいかどうかをテストするためのメソッド!