LoginSignup
7
9

More than 3 years have passed since last update.

RSpecのインストール

Last updated at Posted at 2020-10-19

はじめに

RSpecコトハジメ ~初期設定マニュアル~と公式ドキュメントを参考にしつつ、RSpecのインストールを実施します。

環境

  • ruby 2.6.5p114
  • Rails 6.0.0

Railsインストールはこの記事を参照してください。
Windows10のWSLでRails環境構築

RSpecインストール

参照:rspec/rspec-rails
公式の手順に沿って、インストールしていきます。はじめにGemfileを編集します。

Gemfile
group :development, :test do
  [省略]
  gem 'rspec-rails', '~> 4.0.1'
end

Gemfileの編集が終わったら、プロジェクトディレクトリ直下で下記のコマンドを実行します。

command

# RSpecインストール
$ bundle install

# 定型的な設定ファイルの作成
$ rails generate rspec:install
Running via Spring preloader in process 266
      create  .rspec
      create  spec
      create  spec/spec_helper.rb
      create  spec/rails_helper.rb

RSpec用のディレクトリと、設定ファイルが作成されました。以降はRSpecを使用するため、Minitest用の/testディレクトリは削除します。

command
# testディレクトリの削除
$ rm -rf test

初期設定

作成された.rspecファイルに設定を追加します。

.rspec
--require spec_helper
--color
--format documentation
オプション名 説明
require 呼び出すファイルの指定
coler 出力結果に色を付ける
format 出力形式の設定

参考:Command line - RSpec Core - RSpec - Relish

この設定によりspecファイルに require 'spec_helper' を記載せずに済みます。出力結果もただのドットでなく、文章形式で出力されます。
基本設定はこれで終了です。

テスト系Gem

とりあえず、リストだけ乗っけておきます。あとでFake系サービスなども追加予定です。

Gem名 URL
factory bot thoughtbot/factory_bot_rails
rubocop-rspec rubocop-hq/rubocop-rspec
webmock bblimke/webmock

おまけ database_cleanerについて

Rails 5.1以降のシステムテストをRSpecで実行する(翻訳)
参照した記事に書いてありましたが、Rails 5.1以降はdatabase_cleanerは不要になりそうです。ただ、database_cleanerが自動でインストールされるのではなく、System Specにロールバック機構が実装されるようです。そもそも

spec/rails_helper.rb
RSpec.configure do |config|
  config.use_transactional_fixtures = true
end

参考:Transactions - RSpec Rails - RSpec - Relish
上記の設定があれば、RSpecで実行されたデータベース操作はトランザクション上で処理され、ロールバックにより削除されます。なぜdatabase_cleanerを導入していたかというと

[翻訳+α] Rails/RSpec/Capybara/Seleniumでdatabase_cleaner gemを使う
上記の設定はあくまで、RSpecのプロセスで有効に動作するもので、Capybara/Selenum等を使用したユーザ操作のエミュレート(Feature Spec)だと有効に働かなかったからです。それなので、テスト時に細かくDBのクリーンアップを設定したい!System Specでなく、Feaature Specをまだ使用している、という以外ではdatabase_cleanerは不要となります。

7
9
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
7
9