Ruby 3.0 x Rails 7 のプロジェクトで RSpec の実行環境を作る方法をメモ的に記します。
具体的には RSpec と FactoryBot gem をインストールして設定していきます。
# 環境情報
$ ruby -v
ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [arm64-darwin21]
$ rails -v
Rails 7.0.1
結論からいうと Rails 7 独自の設定は特に必要ありません。
プロジェクトを作成
Rails 7 では rails new
のオプションでフロントエンド関連の色々を指定できますが、特に指定してません。
$ rails new rails7_rspec
RSpec 環境用の gem をインストール
rails new した時に rails7_rspec ディレクトリに生成された Gemfile に追記します。
group :development, :test do
gem "debug", platforms: %i[ mri mingw x64_mingw ]
gem "rspec-rails" # 追加
gem "factory_bot_rails" # 追加
end
Gemfile に従って gem をインストールします。
$ bundle install
各種 gem を設定
RSpec を設定
RSpec の基本設定は rails のジェネレータコマンド (rails) を使って作成します。
rails g rspec:install
これで rspec コマンドから RSpec を即時実行できるようになります。
試しに叩いてみると実行されるはずです。(テストは作ってないので 0 examples になります。)
$ rspec
No examples found.
Finished in 0.0002 seconds (files took 0.07517 seconds to load)
0 examples, 0 failures
FactoryBot を設定
RSpec のテストコードで FactoryBot のメソッドを使う際、クラス名 (FactoryBot) を省略できるようにしておくと便利です。
省略するためには RSpec の基本設定をした時に自動生成された spec/rails_helper.rb
ファイルに追記します。
RSpec.configure do |config|
# RSpec.configure ブロックの中に追記
config.include FactoryBot::Syntax::Methods
end
この記述により、以下のように FactoryBot
というクラス名をつけなくても FactoryBot のメソッドを spec ファイル内で呼び出せるようになります。
user = create(:user)
# 参考:クラス名をつける場合 user = FactoryBot.create(:user)