Railsテストコマンド


背景

・テストコマンドがよくわからないが、デバッグを見つけたり独学においてエラーで時間を割きたくないのでテストコマンドを習得したいと思った
・しかし、テストコマンドをまとめてあるサイトが少なく、あっても素人目だとよくわからないor読みづらい構成になっているため、Railsテストコマンドを自分が読みやすい形にリファクタリングしていきたいと思った。
・本記事の目的は、Railsテストコマンドとその周辺知識についての内容を読みやすいようにまとめることである。

※備忘録を兼ねている為、アジャイル更新となっております。

メソッド

assert_templateメソッド

効果:assert_template後にあるURLがビューを描画しているかをテストする。


require 'test_helper'

class SiteLayoutTest < ActionDispatch::IntegrationTest

  test "layout links" do
    get root_path
    assert_template 'static_pages/home' #該当ビューが正しくテストできているか
    assert_select "a[href=?]", root_path, count: 2
    assert_select "a[href=?]", help_path
    assert_select "a[href=?]", about_path
    assert_select "a[href=?]", contact_path
  end
end

このテストでassert_templateでエラーに引っかかるとき、static_pages/homeのURLテンプレートは表示されないため、テンプレートを作成していない等、テンプレートに原因があると推察できる。

assert_selectメソッド

前提:英語でいうmakeやgetのように意味が多岐にわたる為、汎用性の高いメソッドゆえに定義がむずかしい。
効果1:アプリケーションのビューのテストの際、あるページで重要なHTML要素とその内容がレスポンスに含まれていることをアサーションすることができる


require 'test_helper'

class SiteLayoutTest < ActionDispatch::IntegrationTest

  test "layout links" do
    get root_path
    assert_template 'static_pages/home'
    assert_select "a[href=?]", root_path, count: 2
    assert_select "a[href=?]", help_path
    assert_select "a[href=?]", about_path
    assert_select "a[href=?]", contact_path
  end
end

※随時更新中

参考文献

Ruby on Rails チュートリアル~実例を使ってRailsを学ぼう/第5章レイアウトを作成する
Railsドキュメント
https://railsguides.jp/testing.html
http://d.hatena.ne.jp/zariganitosh/20080405/1207455670