テスト
参考:
Rails テスティングガイド | Rails ガイド [公式]
Testing Rails Applications — Ruby on Rails Guides (en) [Official]
テスト(test) – – Railsドキュメント (v4.2.1)
Railsのテスト | Rails 日本語ドキュメント (Rails4) | Ruby STUDIO
コマンド
テスト用のデータベースを準備する
$ rails db:test:prepare
テスト用データベースのマイグレーションを実行する
$ RAILS_ENV=test rails db:migrate
テストを実行する
$ rails test
参考:
Minitest の使い方
参考:
Minitest でテスト、Rails のテスト (その1) – Qiita
minitest のオススメ基本設定調べてみた – Qiita
minitest のオススメ設定調べてみた アサーション編 – Qiita
How to Test Rails Models with Minitest | Semaphore
Fixtures
参考:
ActiveRecord::FixtureSet | Ruby on Rails API [Official]
Rails のテストで初期データ投入をしてくれる Fixture のつかいかた – Qiita
ChromeDriver を使った SystemTestCase
#Gemfile group :test do gem 'capybara', '>= 2.15', '< 4.0' gem 'selenium-webdriver' gem 'chromedriver-helper' end
次のビューを表示する home#index アクションをテストする
# app/views/home/index.html.erb <h1>Hello World</h1>
test/system ディレクトリにテスト (home_test.rb) を作成する
# test/system/home_test.rb require "application_system_test_case" class HomeTest < ApplicationSystemTestCase test "home#index" do visit root_url assert_selector "h1", text: "Hello World" end end
ヘッドレス Chrome で実行する
# application_system_test_case.rb require "test_helper" class ApplicationSystemTestCase < ActionDispatch::SystemTestCase driven_by :selenium_chrome_headless, screen_size: [1400, 1400] end
もしくは、個々のテスト毎に設定する
# test/system/home_test.rb class HomeTest < ApplicationSystemTestCase driven_by :selenium_chrome_headless, screen_size: [1400, 1400] test "home#index" do ... end end
参考:
Rails 5.1 の SystemTestCase を試してみた – Qiita
RSpec の使い方(BDD/ビヘイビア駆動開発)
# Gemfile group :development, :test do gem 'rspec-rails', '~> 3.7' end
$ rails generate rspec:install
テストを実行する
$ bundle exec rspec
もしくは、
$ rails spec
binstub (bin/rspecコマンド) を作成する
$ bundle binstubs rspec-core
参考:
rspec/rspec-rails: RSpec for Rails-3+ – GitHub
Rails の自動テスト (RSpec で Model のテスト編) | GMOメディア エンジニアブログ
Rails 5.1 以降のシステムテストを RSpec で実行する 翻訳 | TechRacho
RSpec の System spec を使う
Homebrew を使って Mac に ChromeDriver をインストールする
$ brew install chromedriver
もしくは、chromedriver-helper gem を使う
# Gemfile group :test do gem 'chromedriver-helper' end
test 環境に capybara と selenium-webdriver を追加する
# Gemfile group :test do gem 'capybara' gem 'selenium-webdriver' end
Gemfile に rspec-rails を追加する
# Gemfile group :development, :test do gem 'rspec-rails', '~> 3.7' end
rspec に必要なファイルを生成する
$ rails generate rspec:install
次のビューを表示する home#index アクションをテストする
# app/views/home/index.html.erb <h1>Hello World</h1>
specファイル (spec/system/home_spec.rb) を作成する
# spec/system/home_spec.rb require 'rails_helper' describe 'home#index' do before do driven_by :selenium_chrome_headless end it 'displays greeting' do visit root_url expect(page).to have_content 'Hello World' end end
テストを実行する
$ rails spec
参考:
Rails 5.1 以降のシステムテストを RSpec で実行する 翻訳 | TechRacho
rspec-rails 3.7 の新機能! System Spec を使ってみた – Qiita
System spec – RSpec Rails 3.7 | Relish [Official]
driven_by – ActionDispatch::SystemTestCase | Ruby on Rails API [Official]
RSpec でモデルのリレーションをテストする
参考:
モデル間のリレーション Spec を書きたくないので自動生成してみる – Qiita
RSpec 入門
参考:
使える RSpec 入門・その1「RSpec の基本的な構文や便利な機能を理解する」- Qiita