古いバージョンのドキュメントです。最新のバージョンはRails7.0.0

Railsドキュメント(v6.0.2.1)

ファンクショナルテスト

説明

単一のアクションに対して、モデル・ビュー・コントローラを結合してテスト

requite File.dirname(__FILE__) + '/../test_helper'

class EntriesControllerTest < ActionController::TestCase
  def test_truth
    assert true
  end
end

流れ

テスト環境をセットアップ

requite File.dirname(__FILE__) + '/../test_helper'

コントローラを指定

requite File.dirname(__FILE__) + '/../test_helper'

class ShopsControllerTest < Test::Unit**testCase
  def setup
    @controller = ShopsController.new
    @request = ActionController::TestRequest.new
    @response = ActionController:TestResponse.new
  end
end

リクエストを送信

def test_should_get_index
  get :index
end

アクションの実行結果を確認

レスポンスが成功したかをバリデーション
assert_response :success
アクション内で設定されたインスタンス変数をバリデーション
assigns
出力結果のHTMLをバリデーション
assert_select

テストメソッド

リクエスト送信のためのメソッド

メソッド 説明
get(action, parameters) アクションに対して、GETリクエストを送信
post(action, parameters) アクションに対して、POSTリクエストを送信
xhr(request_method, action, parameters = nil, session = nil, flash = nil) アクションに対して、XMLHTTPRequestを送

状態設定・取得のためのメソッド

メソッド 説明
assigns(key = nil) アクションを実行した結果、インスタンス変数に代入されたオブジェクトを取得
session ファンクショナルテストで使用されるセッションへのアクセサ
flash コントローラ内で使用するflashへのアクセサ

バリデーションのためのメソッド

メソッド 説明
assert_response(type, message = nil) アクション実行結果のレスポンスコードをバリデーション
assert_redirected_to(options = {}, message = nil) リダイレクトを返すアクションに対して、そのリダイレクト先がどうなっているかバリデーション
assert_template(expected, message = nil) そのアクションで指定されたテンプレートが描写されているかをバリデーション
assert_select(selector, equality?, message?) アクション実行の結果として描写されるHTMLの内容をバリデーション