雛形
前回の続きの雛形を使用して
Userモデルの正常系テストについて書いていきます。
ここではバリデーションに関するテストを実装致します。
正常系テストとは、
ユーザーが開発者の意図する操作を行った時の挙動を確認するテストコードです。
↓spec/models/user_spec.rb
require 'rails_helper'
describe User do
before do
@user = FactoryBot.build(:user)
end
describe 'ユーザー新規登録' do
context '新規登録がうまくいくとき' do
it "nicknameとemail、passwordとpassword_confirmationが存在すれば登録できる" do
end
it "nicknameが6文字以下で登録できる" do
end
it "passwordが6文字以上であれば登録できる" do
end
end
context '新規登録がうまくいかないとき' do
it "nicknameが空だと登録できない" do
end
it "nicknameが7文字以上であれば登録できない" do
end
it "emailが空では登録できない" do
end
it "重複したemailが存在する場合登録できない" do
end
it "passwordが空では登録できない" do
end
it "passwordが5文字以下であれば登録できない" do
end
it "passwordが存在してもpassword_confirmationが空では登録できない" do
end
end
end
end
context '新規登録がうまくいかないとき' do
のところは異常系テストになるのでまた次の記事で書こうと思います。
テストコードの記述
be_validマッチャを使用します。
itとendの中に記述していきます。
expectのインスタンスが正しく保存されることを確認できます。
expect(インスタンス).to be_validのように使用してください。
↓spec/models/user_spec.rb
it "nicknameとemail、passwordとpassword_confirmationが存在すれば登録できる" do
expect(@user).to be_valid
end
it "nicknameが6文字以下で登録できる" do
@user.nickname = "aaaaaa"
expect(@user).to be_valid
end
it "passwordが6文字以上であれば登録できる" do
@user.password = "000000"
@user.password_confirmation = "000000"
expect(@user).to be_valid
end
テストコードの実行
テストコードの実行にはこのコマンドを使用する。
今回はmodels/user_spec.rb の単体テストなので、こちらのコマンドを使用する。
ターミナルに表示された文字が緑色になれば成功。
↓ターミナル
% bundle exec rspec spec/models/user_spec.rb
````
明日は異常系について書きたいと思います、、、、、、