RSpecをセットアップする
まだテスト実行環境未導入のrailsプロジェクトにRSpecを導入する流れをメモ。
ほぼ必ずといっていいほどfactory_botも使うのでそちらも合わせて入れておきたい。
データベースを使わない、というプロジェクトはfactory_botなしでもいい。(実際ある!)
まずはGemfileにrspec-rails
とfactory_bot_rails
を追記。
factory_bot_rails
はrails用のfactory_bot
のようだ。
group :test do
# 〜 中略
gem 'rspec-rails'
gem 'factory_bot_rails'
end
bundle install
とbin/rails g rspec:install
を実行。
これで以下のようにrspecの設定ファイルが展開される。
$ bundle install
$ bin/rails g rspec:install
create .rspec
create spec
create spec/spec_helper.rb
create spec/rails_helper.rb
テスト用のデータベースに対してdb:migrate
を実行。
$ RAILS_ENV=test bin/rails db:migrate
まだひとつもテストはないけれど、この時点で動作確認。
bundle exec rspec
を実行して以下のように表示されれば、テストコードを動かす準備が完了している。
$ bundle exec rspec
No examples found.
Finished in 0.00062 seconds (files took 0.19644 seconds to load)
0 examples, 0 failures
factory_bot
を使うときは何もしないとFactoryBot.create(:sample)
みたいに書くことになるけど毎回、FactoryBotと書くのは面倒なので省略できるように以下を追加しておく。
この辺はお好みでどうぞ。
RSpec.configure do |config|
# 省略
config.include FactoryBot::Syntax::Methods # 追加!
end
この記事の環境情報
- rails 7.0.4
- rspec 3.11.0
- factory_bot 6.2.1
- 月曜の朝
Rubyに関する他の記事を読む
- slimでtype='application/ld+json'のscriptタグを書く
- Slack APIによる自動メッセージでユーザーグループにメンションする方法
- RubyでUnixtimeからTimeオブジェクトを生成する
- gemインストール時にUndefined symbols for architecture arm64と出たときの対応
- RubyでUTCの時刻情報をJST基準に変換する
RSpecに関する他の記事を読む
- GitHub ActionsでRSpecを実行するサンプル(with PostgreSQL)
- RSpecで現在の時刻を意図的に指定してテストする方法
- RSpecでテストデータが大きくてコードが見ずらい対策にfixtureを使う
最近の記事を読む
- Flutterでcontextを使わずにlocale情報を取得する
- Cloud RunでIAPを有効にしようとしてハマったこと
- slimでtype='application/ld+json'のscriptタグを書く
- タグマネージャーでjsのloadイベントを発火させたいとき
- mysqlコマンドを実行してERROR 2002 (HY000): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)と言われたら