RSpec 3.7 がリリースされました!

Sam Phippen, Yuji Nakayama

Oct 17, 2017

RSpec 3.7 がリリースされました! RSpec プロジェクトは Semantic Versioning に準拠したリリースを行なっているので、 既に RSpec 3 をお使いの場合、このバージョンへのアップグレードは簡単なはずです。 しかし、もしバグを見つけた場合は教えてください。 できるだけ早く修正をし、パッチ版をリリースします。

RSpec は世界中のコントリビュータと共に、コミュニティ主導のプロジェクトであり続けます。 今回のリリースには、27 人のコントリビュータによる 127 のコミットと、31 以上の pull request が含まれています!

ちなみに今回のリリースは、Rails の System Test サポートをできるだけ早くお届けするために、 いつもよりも小規模なリリースになっています。

このリリースに向けて力になってくれたみなさん、ありがとう!

主な変更

Rails: ActionDispatch::SystemTest との統合 (System Spec)

Rails 5.1 では、System Test と呼ばれる新しいタイプのテストが追加されました。 これは Capybara を利用し、フロントエンドの JavaScript からサーバーサイドのデータベースまでフルスタックのテストを可能にするものです。

RSpec には以前から Feature Spec という同様の機能がありました。 しかし、Feature Spec と今回追加された System Spec(System Test の RSpec 版)には以下のような違いがあります。

  1. Feature Spec では、JavaScript が有効な Capybara ドライバー(Selenium や Poltergeist)を使った場合、 テストは Rails とは別のプロセスで実行されます。 その結果、テストプロセスと Rails プロセス間でデータベースのトランザクションが共有されないため、 RSpec 標準のデータベースロールバック機構を利用できず、 代わりに Database Cleaner のような gem を使う必要がありました。 Rails 開発チームは System Test でこのような問題が発生しないように実装をしました。 そのおかげで、System Spec では別の gem を利用することなく RSpec のロールバック機構を利用できます。
  2. RSpec の Feature Spec はデフォルトの Capybara ドライバーとして Rack::Test を利用します。 もし Selenium のような JavaScript が有効なドライバーを使いたい場合は、 ユーザーが自身で Capybara の設定をする必要がありますが、この設定はかなり高度で難しいものでした。 System Spec でデフォルトで Selenium 経由で Chrome を利用しますが、 これらの難解な設定は Rails があなたの代わりに行なってくれます。

以上のような点から、もし Rails 5.1 をお使いの場合、 フルスタックの統合テストとしては Feature Spec よりも System Spec を書くことをおすすめします。 Rails プロジェクトで System Test の実装を主導した Eileen Uchitelle には深く感謝します。

Stats:

Combined:

rspec-core:

rspec-expectations:

rspec-mocks:

rspec-rails:

rspec-support:

Docs

API Docs

Cucumber Features

Release notes:

RSpec Core

Full Changelog

Enhancements:

Bug Fixes:

RSpec Expectations

Full Changelog

Enhancements:

RSpec Mocks

Full Changelog

Enhancements:

Bug Fixes:

RSpec Rails

Full Changelog

Bug Fixes:

Enhancements:

RSpec Support

Full Changelog

Enhancements:

Bug Fixes: