ApplicationHelperのRSpecを書くときメモ

このエントリーを含むはてなブックマーク

RailsでApplicationHelperのスペックを書くときにハマったのでメモ。

準備

まず普通にスペックを書く場合

spec/helpers/appliction_helper_spec.rbを以下のように準備

  1. require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
  2.  
  3. describe ApplicationHelper, :type => :helper do
  4.  
  5.   helper_name :application
  6.   %w{hoge}.each do |method_name|
  7.     it "##{method_name}メソッドが存在すること" do
  8.       helper.should be_respond_to(method_name)
  9.     end
  10.   end
  11.  
  12. end


helper_nameでへルーパー名を定義しておくのがポイント。
そしてExampleの中から「helper」を通じて、エクスペクテーションを書いていきます。(言葉の使い方あってる?)

リクエストを使うスペックを書きたい場合

ヘルパーメソッドの中でリクエストを参照する場合(そもそもヘルパーがリクエストを参照するのが美しいことなのか疑問を抱きましたが、とりあえず無視)

ApplicationControllerにスタブアクションを作ってあげる、というやり方でなんとかしました。

  1. require File.expand_path(File.dirname(__FILE__) + '/../spec_helper')
  2.  
  3. describe ApplicationHelper, :type => :helper do
  4.  
  5.   class ApplicationController
  6.     def stub_action
  7.       render :text => self
  8.     end
  9.   end
  10.  
  11.   helper_name :application
  12.  
  13.   it "ヘルパーの中からリクエストを参照できること" do
  14.     get :stub_action
  15.     helper.mobile_tracking_code.should be_xxxx
  16.   end
  17.  
  18. end


こんな感じで、普通にコントローラースペックを書くときのようにgetとかpostとかヘルパースペックの中からリクエストを使ったテストを一応かけます。

もっと良い方法がある気がする。

Posted in ruby, ruby on rails at 10月 19th, 2009. Trackback URI: trackback

No Responses to “ApplicationHelperのRSpecを書くときメモ”

Leave a Reply