2
0

More than 3 years have passed since last update.

(正常系)Rspec Userモデルの単体テストの手順

Last updated at Posted at 2021-09-07

雛形

前回の続きの雛形を使用して
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 

明日は異常系について書きたいと思います、、、、、、

2
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
0