5
4

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.

Rails 7.0.1 のプロジェクトで RSpec 実行環境をセットアップ

Posted at

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 ファイルに追記します。

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)
5
4
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
5
4

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?