読者です 読者をやめる 読者になる 読者になる

Rails4.2 MinitestをRSpecに変更する

Rails Ruby

Railsプロジェクトを新規作成する際下記オプションを使用するとMinitestを除いたRailsプロジェクトが作成される。

$ rails new hoge -T

プロジェクト開始後途中でMinitestからRSpecに変更したくなった場合は何をすればいいのか?
テストコードの移植等には触れない。

1.testディレクトリの削除

testディレクトリにMinitestのテストコードが格納されているのでディレクトリ毎削除する

2.読み込むコンポーネントの修正

当たり前だが1を行っただけではMinitestはアクティブなまま。この状態で何かをgenerateするとMinitest用のファイルがtestディレクトリに作成される。
application.rbで読み込むコンポーネントを指定しているがそこでMinitestを読み込まないようにする。

diff --git a/config/application.rb b/config/application.rb
index 0f21836..d6e2cb0 100644
--- a/config/application.rb
+++ b/config/application.rb
@@ -1,6 +1,14 @@
require File.expand_path('../boot', __FILE__)

-require 'rails/all'
+# Pick the frameworks you want:
+require "active_model/railtie"
+require "active_job/railtie"
+require "active_record/railtie"
+require "action_controller/railtie"
+require "action_mailer/railtie"
+require "action_view/railtie"
+require "sprockets/railtie"
+# require "rails/test_unit/railtie"

# Require the gems listed in Gemfile, including any gems
# you've limited to :test, :development, or :production.

全部読み込む場合にはrails/allで良いみたいだがそれ以外は個別に書くしかないみたいだ。

ちなみにこの修正を行わなくてもrspec-railsを導入すればrspec用ファイルが生成されるが、余計なコンポーネントを抱えながらになるのでできればやっておきたい。

あとはGemfileにrspec-railsを追加してbundle installすれば-Tオプションつけたのと同じ状態になる。