« フランスパンを作った | トップページ | RSpec on Railsがrake statsを上書きする件について »

2008.04.14

RSpec on Railsでhelper(ヘルパーメソッド)のテストを作成する方法 & RSpec雑感

どんなに頑張って検索してもわかりやすい日本語のドキュメントがなかったので、記録。

Rubyist Magazine - スはスペックのス 【第 2 回】 RSpec on Rails (コントローラとビュー編)

を参考に、でも「ヘルパーのテストのことは次回以降で説明します。」と知りたかったことがすっぽり抜けていたので、続編を猛烈に希望。


まずはgeneratorでひな形を作る(上のページ参照)

ruby script/generate rspec_controller blogs

ちなみに、ヘルパーメソッドのテスト用のgenerator無いらしい。
この時注意なんだけど、このrspecのgeneratorは./app/controller/とか./app/helper/とかのファイルを上書きする。ちゃんとYorNと聞いてくるんだけど、まさかappディレクトリ以下を上書きすることはないだろうと、Yを連打していたら泣けた。。
commit前だったから、結構頑張って書いたコードが消えてショックから立ち直るのに時間がかかった。

んで、そのひな形ができる。
helperは例えば
./spec/helpers/entries_helper_spec.rb
とかに存在する。
generator使わないで手動でファイル作ったらうまくいかなかった。スペルミスなのか、generatorが重要な関連ファイルを生成してくれているのか、謎。

お次に、本家のドキュメント。
RSpec-1.0.8: Helpers

これを見ると、まあ、書いてあるとおりなけど、わからねー。

describe PeopleHelper do

で、PeopleHelperの部分がヘルパーのクラス名。
で、ヘルパーにfixturesを読み込ませることができて、↓みたいな感じ。

require File.dirname(__FILE__) + '/../spec_helper'

describe EntriesHelper do
fixtures :users, :entries
before(:each) do
@user = User.new
@entry = Entry.new
end
it "should match tags" do
@user = users(:foo)
@entry = entries(:baa)
display_tags(@user, @entry).should match(/hoge/)
end
end


で「display_tags」はそのhelperに定義されているメソッド名。最初、そんなメソッド無いよ?ってエラーが出てたんだけど、いろいろやっていたら出なくなった。謎。

んで、RSpecでコード書くときはこのページ必須。変換表。
RSpec-1.0.8: Test::Unit Cheat Sheet

fixturesは、Rails標準のtestのものでOK。
あー、シンボリックリンクでもいいのかな?そうしておこう。


なんだろう、こうやってまとめてみると単純で簡単だけど、ここまでたどり着くのに凄く時間がかかった。。

|

« フランスパンを作った | トップページ | RSpec on Railsがrake statsを上書きする件について »

ruby」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/22269/40880111

この記事へのトラックバック一覧です: RSpec on Railsでhelper(ヘルパーメソッド)のテストを作成する方法 & RSpec雑感:

« フランスパンを作った | トップページ | RSpec on Railsがrake statsを上書きする件について »