LoginSignup
1
0

More than 1 year has passed since last update.

Rspec Userモデルの単体テストの手順

Last updated at Posted at 2021-09-06

テストコードの備忘録として記事を
書かせていただきます!!

①バリデーションの設定を行う

ここではバリデーションに関するテストを実装致します。

②Gemを追加

gemfileに
gem 'rspec-rails', '~> 4.0.0'   を追加で記述

group :development, :test do
  # Call 'byebug' anywhere in the code to stop execution and get a debugger console
  gem 'byebug', platforms: [:mri, :mingw, :x64_mingw]
  gem 'rspec-rails', '~> 4.0.0'
end

group :development, :testというグループの中に記述。
そうすることで、Gemの動作に制限をもたせる。

③bundle installを実行

ディレクトリの確認を忘れずに

bundle install

④Rspecインストール

rails g rspec:install

ターミナル内で生成されるファイルがこれ

create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb

⑤.rspecに設定を追加

この記述を行うとテストコードの結果をターミナル内でわかりやすく表示されるようになる。

--require spec_helper
--format documentation

⑥テストコードを記述するファイルの準備

rails g rspec:model user

実行後、create spec/models/user_spec.rb
がターミナル内で生成される。、
今回はユーザーコードの単体テストのみなので、
ユーザーモデルのテストコード用のファイルを用意します。

⑦eampleを整理する

テストコードを書くときは正常系と異常系で分ける。
例→どの時に新規登録ができて、どのようなときにできないのかを考える
うまくいくときが正常系で
うまくいかないときが異常系。
それを分けるためにはcontextで分ける!

↓create 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

↓FactoryBotがランダムでユーザーネームを選んでくれる記述

@user = FactoryBot.build(:user)

describeとは、テストコードのグループ分けを行うメソッド
「どの機能に対してのテストを行うか」をdescribeでグループ分けし、その中に各テストコードを記述.

describeにつづくdo~endの間に、さらにdescribeメソッドを記述することで、入れ子構造をとることもできる。

describe 'ユーザー新規登録' do

itメソッドは、describeメソッド同様に、グループ分けを行うメソッド。
itの場合はより詳細に、「describeメソッドに記述した機能において、どのような状況のテストを行うか」を明記する。

it "nicknameが7文字以上であれば登録できない" do
      end

↓続きはこちらになります。

1
0
1

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
1
0