メソッド一覧(一部)
①valid?
日本語で「正しい」を意味しており、「正しいかどうか」を判断してくれるメソッド。基本は異常系のテストで使用される。
作成したデータが正しく保存される場合は、trueを返して、保存されない場合はfalseを返す。また保存されない場合は、「なぜ保存されないのか」の示すエラーメッセージも生成する。
users.rb
FactoryBot.define do
factory :user do
nickname { Faker::Name.initials(number: 2) }
email { Faker::Internet.free_email }
password { Faker::Internet.password(min_length: 6) }
password_confirmation { password }
end
end
user_spec.rb
require 'rails_helper'
describe User, type: :model do
before do
@user = FactoryBot.build(:user)
end
describe 'ユーザー新規登録' do
context '新規登録がうまくいくとき' do
# (省略)
end
context '新規登録がうまくいかないとき' do
it "ニックネームが空だと登録できない" do
@user.nickname = ''
@user.valid? # <=この部分
# => false
end
end
end
end
②errorsとhull_messages
errorsは**valid?**で判定されたデータのエラーを表示させてくれるメソッド。
hull_messagesはエラーメッセージを出力するためのメソッド。
基本はこの2つのメソッドを組み合わせて使用する。
users.rb
FactoryBot.define do
factory :user do
nickname { Faker::Name.initials(number: 2) }
email { Faker::Internet.free_email }
password { Faker::Internet.password(min_length: 6) }
password_confirmation { password }
end
end
user_spec.rb
require 'rails_helper'
describe User, type: :model do
before do
@user = FactoryBot.build(:user)
end
describe 'ユーザー新規登録' do
context '新規登録がうまくいくとき' do
# (省略)
end
context '新規登録がうまくいかないとき' do
it "ニックネームが空だと登録できない" do
@user.nickname = ''
@user.valid?
expect(@user.errors.full_messages).to include("ニックネームを入力してください") # <=この部分
end
end
end
end
この後、改めて紹介しますが、includeとは、日本語で「含む」の意味をもち、「Xの中にYという文字列が含まれているかどうか」を確認できるマッチャのことです。
マッチャとは?
期待するデータと実際のデータを比較して、一致したまたは一致しなかったという結果を返すメソッドのこと。
マッチャ一覧(一部)
①include
includeとは、日本語で「含む」の意味をもち、「Xの中にYという文字列が含まれているかどうか」を確認できるマッチャのことです。
users.rb
FactoryBot.define do
factory :user do
nickname { Faker::Name.initials(number: 2) }
email { Faker::Internet.free_email }
password { Faker::Internet.password(min_length: 6) }
password_confirmation { password }
end
end
user_spec.rb
require 'rails_helper'
describe User, type: :model do
before do
@user = FactoryBot.build(:user)
end
describe 'ユーザー新規登録' do
context '新規登録がうまくいくとき' do
# (省略)
end
context '新規登録がうまくいかないとき' do
it "ニックネームが空だと登録できない" do
@user.nickname = ''
@user.valid?
expect(@user.errors.full_messages).to include("ニックネームを入力してください") # <=この部分
# < X > < Y >
end
end
end
②be_valid
be_validとは、expectのインスタンスが正しく保存されていることを判断するメソッド。基本は正常系のテストで使用される。
users.rb
FactoryBot.define do
factory :user do
nickname { Faker::Name.initials(number: 2) }
email { Faker::Internet.free_email }
password { Faker::Internet.password(min_length: 6) }
password_confirmation { password }
end
end
user_spec.rb
describe 'ユーザー新規登録' do
context '新規登録がうまくいくとき' do
it "ニックネーム・メールアドレス・パスワード・パスワード(確認用)が存在すれば登録できる" do
expect(@user).to be_valid
end
end
context '新規登録がうまくいかないとき' do
# (省略)
end
end