RSpec+Sporkでテストを高速化する方法
いまさらすぎる話題ですが、Rails初心者の私にとっては新鮮な話ですので、ご勘弁ください。。。
RSpecでテストを書いてて「やけに遅いな〜こんなものか」と思っていたのですが、Sporkなるものがあるらしいですね。 ということで設定してみました。
設定方法
Gemfileに書く
とりあえずGemfile
を編集します。
rspec-rails
とspork-rails
を書きます。
group :development, :test do
gem 'rspec-rails'
gem 'spork-rails'
end
インストールする
有無を言わさずインストールします。
$ bundle install
RSpecを初期化する
すでにしていれば問題ないですが、していないとSpork設定時に怒られるので……。
これをやると、spec/spec_helper.rb
が生成されます。
$ bundle exec rspec:install
Sporkを初期化する
つぎにSporkの設定ファイルを生成します。
これをやると、spec/spec_helper.rb
が勝手に編集されます。
$ bundle exec spork --bootstrap
設定ファイルを編集する
spec/spec_helper.rb
を開いて、RSpec生成時に書いてあった設定をSpork.prefork do
〜end
の中に書きます。
Spork.prefork do
# ここに書く
end
Spork.each_run do
end
.rspecを編集する
Sporkを使うには、bundle exec rspec --drb
とすればよいです。
ただ、毎回--drb
をつけるのも面倒なので、標準でつけるようにします。
これは、Railsのルートディレクトリにある.rspec
に書きます。
--color
--drb
使用方法
Sporkを起動する
ようやく設定が終わったので、Sporkを起動します。
$ bundle exec spork
テストする
この状態でRSpecでテストすると、ものすごくはやいです。
$ bundle exec rspec
注意
Sporkはもろもろの設定を事前に読み込んでおくためにテストが高速化されます。
なので、config/routes.rb
などを編集したら、Sporkを再起動しなければなりません。
この辺自動リロードなどもできると思いますが、ちょっと疲れたので今度にします。。。