テスト

参考:

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

参考:

テスト(test) – – Railsドキュメント

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

RSpec による Rails テスト入門 – Qiita

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

使える RSpec入門・その4「どんなブラウザ操作も自由自在!逆引き Capybara大辞典」- Qiita

コントローラテストの基本を整理。- Qiita

タグ:

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です