はじめに
Rails初心者です。
RSpecを初めて触るので、初めに行うRSpecのインストール〜アプリケーション設定について、備忘録としてまとめます。
既存アプリに追加する前提です。
1から作る場合は、こちらが参考になります。
Railsアプリ作成手順まとめ
バージョン管理
ruby 2.7.0
rails 5.1.6
RSpecセットアップ
①RSpecインストール
1-1 Gemfileにrspec-rails
を追加
group :development, :test do
# 元からあるコードは省略
gem 'rspec-rails', '~> 3.6.0'
end
1-2 bundle実行
$ bundle install
②テストデータベース確認
2-1 テスト用データベース確認
・SQLiteの場合
test:
<<: *default
database: db/test.sqlite3
・MySQL・PostgreSQLの場合
test:
<<: *default
database: アプリ名
があるはずなので確認。
もし書いてなければ、
config/database.yml
に上記のようなコードを追加
↓
$ bin/rails db:create:all
でテストデータベース作成。
※余談ですが、 rails
と bin/rails
の違いについては、
こちらが分かりやすいです。
Rails 4.1以降のコンソールコマンドは必ず bin/ を付けなきゃいけないの?
③RSpec設定
3-1 RSpecインストール
$ bin/rails generate rspec:install
これにより、
・RSpec用の設定ファイル(.rspec
)
・私たちが作成したスペックファイルを格納するディレクトリ(spec
)
・RSpecの動きをカスタマイズするヘルパーファイル
の3つが作成されます。
3-2 testディレクトリの削除
RSpecではspecディレクトリのspecファイルに書いてくので、Railsアプリケーション作成時に作られたtestファイルたちを削除します。
$ rm -r ./test
3-3 デフォルトの形式→ドキュメント形式へ変更
必須ではないですが、RSpecの出力結果を見やすくします。
.rspec
ファイルに下記を追加。
--require spec_helper
--format documentation
3-4 binstub
インストール
アプリケーションの起動時間を早くするSpring
を追加します。
group :development do
# 元からあるコードは省略
gem 'spring-commands-rspec'
end
$ bundle install
↓
新しいbinstub
を作成
$ bundle exec spring binstub rspec
実行すると、
bin
ディレクトリ内にrspec
という実行用ファイルが作成されます。
④正常にRSpecがインストールできてるか確認
4-1 コマンド実行
$ bin/rspec
Running via Spring preloader in process 28279
No examples found.
Finished in 0.00074 seconds (files took 0.14443 seconds to load)
0 examples, 0 failures
このように出力されていれば成功です。
⑤テストファイル自動作成設定
5-1 ファイル作成に応じてテストファイルを作成
rails generate
コマンドのようにジェネレータを使うと、
現時点で既に、
デフォルトのMinitest
ファイルがtest
ディレクトリには作成されず、
RSpec
ファイルがspec
ディレクトリに作成されます。
特に設定は不要です。
5-2 不要なテストファイルが作成されない設定
あとは、
不要なファイルが自動で作成されないように
config/application.rb
に設定を加えます。
require_relative 'boot'
require 'rails/all'
Bundler.require(*Rails.groups)
module Testapps # 自分が作成したアプリ名
class Application < Rails::Application
config.load_defaults 5.1
# 元からあるコードは省略
config.generators do |g|
g.test_framework :rspec,
fixtures: false, # テストDBにレコード作成するファイルの作成をスキップ(初めだけ、のちに削除)。
view_specs: false, # ビューファイル用のスペックを作成しない。
helper_specs: false, # ヘルパーファイル用のスペックを作成しない。
routing_specs: false # routes.rb用のスペックファイル作成しない。
end
end
end
上のコードでは、
モデルスペックとコントローラスペックが
デフォルトで自動作成されるようになっています。
他に自動作成してほしいファイルがあれば、
上の該当するコードは書かなくて良いです。
参考
Everyday Rails - RSpecによるRailsテスト入門
現場で使える Ruby on Rails 5速習実践ガイド
とても分かりやすいです。
引き続き勉強していきます。