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