ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

RSpecの自分なりの使用方法

Ruby on Railsのテストで、RSpecというものがあります。
デフォルトのテストであるTest::Unitもありますが、RSpecのほうが
より仕様に沿ったテストを記述しやすいように感じます。

RSpecを使うにあたり
・Windowsだと起動に時間が掛かるのを何とかしたい
・テストからコントローラやモデルを呼び出し、ステップ実行したい
という希望がありました。

これらの解決方法を踏まえ、自分なりのRSpecの使用方法を纏めておきたいと思います。

RSpecとSporkのセットアップ
Sporkというのはテスト用のサーバーのようなものであり、これを使うと
RSpecの起動が早くなります。

1.インストール
Gemfileに以下を記述し、bundle install を実行します。

gem 'rspec-rails'
gem 'spork'

'rspec-rails'は group :development, :test do〜end の中に記述するといいでしょう。

2.rspecのインストール
以下のコマンドを実行します。

$ rails generate rspec:install

3.Sporkのセットアップ
以下のコマンドを実行します。

$ spork --bootstrap

◆テストの作成
1.integrationテスト作成
以下のコマンドを実行します。

$ rails generate integration_test テスト名

spec/requestsフォルダ内に、テスト名_spec.rbファイルが作成されます。

2.コントローラのテストを作成
以下のコマンドを実行します。

$ rails g rspec:controller コントローラ名

◆テストの実行
1.sporkの起動
以下のコマンドを実行します。

$ spork

2.sporkを使ったテストの実行
sporkを起動したのとは別のコンソールで、以下のコマンドを実行します。
「--drb」がsporkを使うためのオプションです。

$ rspec spec/対象のテスト.rb --drb (特定ファイルのテストを実行)
$ rspec spec/ --drb (specフォルダ内の全テストを実行)

RSpecデバッグ
デバッグする場合は、sporkを使えません。なので起動に時間がかかります。

1.ブレークポイントの設定
デバッグで止めたい箇所に、「debugger」を記述します。

2.RSpecの起動
以下のコマンドを実行します。「-d」がデバッグ実行のためのオプションです。

$ rspec spec/対象のテスト.rb -d (特定ファイルのテストを実行)
$ rspec spec/ -d (specフォルダ内の全テストを実行)

以上です。