RSpecはRubyのテストフレームワークです。
#インストール
下記をGemfileに記述してbundle install。
RSpecはRailsアプリケーションにデフォルトでは入っていないので、RSpecとその他いくつかのヘルパーをインストール。
group :development, :test do
gem 'rspec-rails', '~> 2.14.0'
gem 'factory_girl_rails', '~> 4.2.1'
end
group :test do
gem 'faker', '~> 1.1.2'
gem 'capybara', '~> 2.1.0'
gem 'database_cleaner', '~> 1.0.1'
gem 'launchy', '~> 2.3.0'
gem 'selenium-webdriver', '~>2.45.0'
end
selenium-webdriverはバージョンを最新にしなければ、うまく動かない可能性があるので注意。
#RSpecの設定
$ bundle exec rails generate rspec:install
を実行。
下記を生成。
create .rspec
create spec
create spec/spec_helper.rb
RSpecの出力をドキュメント形式で読みやすくする。
--format documentation
を追記。
不要なファイルを生成しないための設定
config.generators do |g|
g.test_framework :rspec,
fixtures: true,
view_specs: false,
helper_specs: false,
routing_specs: false,
controller_specs: true,
request_specs: false
g.fixture_replacement :factory_girl, dir: "spec/factories"
end
development環境で使われているデータベース構造をtest環境へクローンする。
$rake db:test:clone
*WARNINGが出たが、とりあえず動く。
この点については下記を参照。
[Railsで既存のデータベースを使ったWeb API開発のハマりどころ]
(http://qiita.com/tetsuya/items/f21170a9667d7e465da8)
RSpecでテストデータベースの準備
$bundle exec rake db:test:prepare
や
$bundle exec rake db:migrate RAILS_ENV=test
も同様の役割を持つコマンドらしく、バージョンによってころころ変わる。
なお、データベースの構造を変更したときは、cloneコマンドでtestデータベースにその変更を反映させなければならない。
#参考
Everyday Rails - RSpecによるRailsテスト入門
を参考にしております。詳細な説明・使い方を知りたい方はオススメです。
使えるRSpec入門・その1「RSpecの基本的な構文や便利な機能を理解する」
RSpecに関しましてはこちらも参考になります。その1~その4まであります。