MENU

RSpecでテストコードを書く手順 #3

Gemに追加する

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

% cd ~/〇〇 #〇〇のディレクトリへ移動
% bundle install

% rails g rspec:install(RSpecをインストール)

.rspecファイル
1.--require spec_helper
2.--format documentation ←追加

%rails g rspec:model モデル名

今回モデル名はuserモデルとします%rails g rspec:model user

FactoryBotを導入

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'   
       gem 'factory_bot_rails'    ←追加
end

% bundle install

specファイルに

spec
  factories
     users.rb ←作成

〇〇s.rbファイルに

FactoryBot.define do
  factory :user do
    nickname              {"test"}
    email                 {"test@example"}
    password              {"000000"}
    password_confirmation {password}
  end
end

spec/models/user_spec.rb

require 'rails_helper'

RSpec.describe User, type: :model do
  before do
    @user = FactoryBot.build(:user)
  end

  describe 'ユーザー新規登録' do
    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 "nicknameが空では登録できない" do
       @user.nickname = ''
       @user.valid?
       expect(@user.errors.full_messages).to include("Nickname can't be blank")
    end
               ...etc
  end
end

テストコード実行

% bundle exec rspec spec/models/user_spec.rb