setup
メソッドとは?
- Ruby on Railsのテストフレームワークにおいて、
setup
メソッドは各テスト実行前に必要なデータや状態を準備するために使用されるメソッドです。
- このメソッドを通じてテスト環境を一貫して予測可能な状態に初期化可能 => 各テストが独立して実行可能になります。
- 該当テストクラス内の全てのテストメソッドが実行される前に自動的に呼び出されます。
主な機能と利点
- テスト環境の一貫性を保証
setup
メソッドは各テストが開始される前に同じ状態から開始できるようにしてくれます。
- 重複コードの減少: 必要なオブジェクトの作成、データベースの設定、インスタンス変数の初期化などの繰り返し作業を
setup
メソッド内で処理することにより、テストコード全体にわたる重複を減らします。
第3章 ほぼ静的なページの作成
StaticPagesControllerTest
例
require 'test_helper'
class StaticPagesControllerTest < ActionDispatch::IntegrationTest
def setup
@base_title = "Ruby on Railsチュートリアルサンプルアプリ"
end
test "should get home" do
get static_pages_home_url
assert_response :success
assert_select "title", "Home | #{@base_title}"
end
test "should get help" do
get static_pages_help_url
assert_response :success
assert_select "title", "Help | #{@base_title}"
end
test "should get about" do
get static_pages_about_url
assert_response :success
assert_select "title", "About | #{@base_title}"
end
end
主な変更点
setup
メソッド内に@base_title
インスタンス変数を宣言し、全てのテストで使用する基本タイトルを初期化しました。
- 各テストメソッド内で
assert_select "title", "Page Title | #{@base_title}"
形式を使用し、各ページのタイトルが期待する値と一致するかを検証します。
=> この際、"Page Title"
部分は各ページに合わせて"Home"
, "Help"
, "About"
に変更されます。
- 各テストでタイトルの基本部分を繰り返し書く必要がなくなりました。