1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

RSpec単体テストコード作成手順(ログインユーザー作成Ver.)

Last updated at Posted at 2020-09-03

RSpec単体テストコード作成手順(ログインユーザー作成Ver.)

RSpecの単体テストコードの作り方を、ざっくり一眼でわかるようにまとめないと慣れるまで今後苦労すると思ったので、作成手順を自分なりにまとめてみました。

1.RSpecを使用するためのgem導入

・Gemfile
group :development, :test do
  #省略
  gem 'rspec-rails'
end

・ターミナル
% bundle install

2.RSpecを導入

・ターミナル % rails g rspec:install

3.テストコードの結果をターミナル上で可視化するための設定

/.rspec
--require spec_helper
--format documentation

4.FactoryBotとFakerのgemを導入

・Gemfile
group :development, :test do
  # 省略
  gem 'rspec-rails'
  gem 'factory_bot_rails'
  gem 'faker'
end

・ターミナル
% bundle install

5.ダミー用の画像を用意

public/images/ダミー画像

6.~モデルのテストコードを記述するためのファイルを生成

・ターミナル % rails g rspec:model モデル名

7.FactoryBotを使用して、Userモデルのインスタンスを生成するための値を設定

(例)
spec/factories/users.rb

FactoryBot.define do
  factory :user do
    nickname {Faker::Name.last_name}
    email {Faker::Internet.free_email}
    password {Faker::Internet.password(min_length: 6)}
    #6文字以下にする場合↑
    password_confirmation {password}
  end
end

8.FactoryBotを用いてインスタンスを生成

(例)
spec/models/user_spec.rb

require 'rails_helper'

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

9.exampleを整理する

(例文) ・nicknameとemail、passwordとpassword_confirmationが存在すれば登録できること ・nicknameが空では登録できないこと 〜 など。

10.exampleをテストコードのファイルに記述

(例)
spec/models/user_spec.rb

describe 'ユーザー新規登録' do
    it "nicknameとemail、passwordとpassword_confirmationが存在すれば登録できること" do
    end
  ・・・
end

11.テストコードを記述,実行

・ターミナル % bundle exec rspec spec/models/user_spec.rb

暗記せずともこれ見ればある程度作れるようになるといいな。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?