はじめに
Ruby on Rails チュートリアルでは「minitest」を使用してテストが実施されていますが、実際の現場では主に「RSpec」を使用してテストを実施するとのことなので、チュートリアルのテストを実際の現場に近づけるために「RSpec」で実施するようにしました。まず手初めに「第3章」のテストを RSpec で書き換えてみたので、同じようにチュートリアルのテストを RSpec で実施してみたい人の参考になれば幸いです。
対象者
- Ruby on Rails チュートリアルのテストを Rspec で実施予定、または実施してみたい人
- Ruby on Rails チュートリアル「第3章」のテストを Rspec で書きたいけど、書き方が分からない人
テストコード
実際にテストコードを書き換えた結果が下記になります。
Minitest
static_pages_controller_test.rb
require 'test_helper'
class StaticPagesControllerTest < ActionDispatch::IntegrationTest
def setup
@base_title = "Ruby on Rails Tutorial Sample App"
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
RSpec
static_pages_spec.rb
require "rails_helper"
RSpec.describe "StaticPages", type: :request do
before do
@base_title = "Ruby on Rails Tutorial Sample App"
end
describe "Home page" do
it "should get home" do
visit static_pages_home_url # /static_pages/home/ へアクセス
expect(page.status_code).to eq(200) # HTTP ステータスコードが "200" か判定
expect(page).to have_title "Home | #{@base_title}" # タイトルに 「Home | Ruby on Rails Tutorial Sample App」 が含まれているか判定
end
end
describe "Help page" do
it "should get help" do
visit static_pages_help_url
expect(page.status_code).to eq(200)
expect(page).to have_title "Help | #{@base_title}"
end
end
describe "About page" do
it "should get about" do
visit static_pages_about_url
expect(page.status_code).to eq(200)
expect(page).to have_title "About | #{@base_title}"
end
end
end
##次回
「第4章」のテストコードを RSpec に書き換える予定です。