0
1

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 1 year has passed since last update.

Rspecの導入手順

Last updated at Posted at 2023-04-11

テストコードを書く前の準備(Rpecの導入手順の備忘録)

1.Rspecを使用するためのGemを導入ついでにFactorBotとFakerも導入しておく

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

bundle installを実行
余談:bandle install時に出る警告文を消すのにgem 'net-http'も一緒に記述する

2.アプリケーション内でコマンドを実行し、Rspecを導入

ruby.ターミナル
% rails g rspec:install

コマンド実行によって以下のようにディレクトリやファイルが生成される

ruby.ターミナル
create  .rspec
create  spec
create  spec/spec_helper.rb
create  spec/rails_helper.rb

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

ruby.rspec
--require spec_helper
--format documentation  #追記

また、エラーメッセージを英語で出力したいときは以下の設定を行う。

spec.rails_helper.rb
#中略
I18n.locale = "en"
# RSpec.configure do |config| 〜 end の外に記載しましょう。

RSpec.configure do |config|

# 中略

end

4.画像投稿のテストをするためのダミー画像を用意する

スクリーンショット 2023-04-11 112352.png
画像のように所定のディレクトリに配置する。

5.コマンドを実行してテストコードを記述するファイルを生成する

ruby.ターミナル
rails g rspec:model モデル名(モデル名は単数形)

以下のように表示されていればファイルは生成されている

ruby.ターミナル
create  spec/models/モデル名_spec.rb

6.FactoryBotを使用してインスタンス生成を共通化しておく

下記はユーザー登録時のユーザー情報のインスタンス生成のFactoryBotの記述例
ruby.factories/users.rb
FactoryBot.define do
  factory :user do
    nickname {Faker::Name.initials(number: 2)}
    email {Faker::Internet.free_email}
    password {Faker::Internet.password(min_length: 6)}
    password_confirmation {password}
  end
end

パスワードで英数字混合のものをランダムに含めたいときは以下のように記述するとよいらしい。

password { Faker::Lorem.characters(number: 6, min_alpha: 1, min_numeric: 1) }

上記の指定は

指定 指定内容
number: 6 ランダムな文字6文字を生成
min_alpha: 1 最低1文字以上はアルファベット
min_numeric:1 最低1文字以上は数字

参考記事:https://qiita.com/takuo_maeda/items/70a3fb2cc190099f3a5e

ついでに誕生日を生成する時

birth_date { Faker::Date.birthday(min_age: 18, max_age: 65) }

7.テストコードファイルにFactoryBotを使用してインスタンスを生成するための記述の準備

手動でディレクトリを以下のようになるように作成する。
スクリーンショット 2023-06-11 112557.png

FactoryBotの記述例↓

spec/factories/users.rb
FactoryBot.define do
  factory :user do
    nickname              {'test'}
    email                 {'test@example'}
    password              {'000000'}
    password_confirmation {password}
  end
end
ruby.spec/models/user_spec.rb
RSpec.describe User, type: :model do
# 以下追記
  befor do
    @user = FactoryBot.build(:user)
  end

ここまでがテストコードを書く前に準備すること。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?