※本サイトで紹介している商品・サービス等の外部リンクには、アフィリエイト広告が含まれる場合があります。
テストの重要性
- テストとは、プログラムが動くことを確認するためのプログラムのこと
- バグを減らして、ユーザーに安心して使ってもらうことが大事
- プログラムがしっかり動くことを保証しなくてはいけない
- 確認したいことを決める
- ダミーデータを作成する
- ダミーデータで「1.確認したいこと」が起こるか確認する
railsでテストを書くために、rspecをインストールする
rspecとは
railsで簡単にテストを実行するための環境を用意してくれるgem
gemfileに追加する
group :development, :test do
# 中略
gem 'rspec-rails', '4.0.1'
end
(今回は講義に合わせたバージョンでインストール)
bundle install
rails g rspec:install

インストールしてファイルも作成された
ここまででrspecの設定は完了
Modelのテスト
Modelのテスト(model spec)の流れ
- 確認したいことを決める
今回は、「タイトルと記事があれば保存されるのか」確認したい - ダミーデータ(user、article)を作成する
- ダミーデータが保存されるかを確認する
どのmodelのテストを書きたいのか決めて、ターミナルで以下を実行する
rails g rspec:model article
=> create spec/models/article_spec.rb
article
のところには、テストしたいmodelの名前が入る
require 'rails_helper'
RSpec.describe Article, type: :model do
# ↓のpending〜 は不要なので削除しておく
pending "add some examples to (or delete) #{__FILE__}"
end
これで準備完了!
実際に書いてみる
modelクラスでちゃんとデータが保存できるかを確認する
RSpec.describe Article, type: :model do
it 'タイトルと内容が入力されていれば、記事を保存できる' do
end
end
it
とは”確認したいこと”を確認する
記事を保存するには、①ユーザーと②記事、2つのダミーデータが必要
適当なuserと、Fakerで適当な記事を作成する
RSpec.describe Article, type: :model do
it 'タイトルと内容が入力されていれば、記事を保存できる' do
user = User.create!({
email: 'test@example.com',
password: 'password'
})
article = user.articles.build({
title: Faker::Lorem.characters(number: 10),
content: Faker::Lorem.characters(number: 300)
})
expect(article).to be_valid
end
end
記事が有効であるか確認する
expect
・・・英語で「期待する」be_valid
・・・RSpecで用意されているメソットで、「インスタンスが保存できる状態か確認する」
ターミナルを開く
bundle exec rspec spec/models/article_spec.rb
bundle exec rspec
で、RSpecを実行できるspec/models/article_spec.rb
で、どのテストを実行するのか指定する
実行してみる

この「・」が緑→テストが通った、赤→テストは失敗という意味
成功したので、「1 example, 0 failures
」と表示される
#DAY13