9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Railsテストコマンド

Last updated at Posted at 2018-07-26

背景

・テストコマンドがよくわからないが、デバッグを見つけたり独学においてエラーで時間を割きたくないのでテストコマンドを習得したいと思った
・しかし、テストコマンドをまとめてあるサイトが少なく、あっても素人目だとよくわからない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

9
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
9
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?