どんなに頑張って検索してもわかりやすい日本語のドキュメントがなかったので、記録。
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。
あー、シンボリックリンクでもいいのかな?そうしておこう。
なんだろう、こうやってまとめてみると単純で簡単だけど、ここまでたどり着くのに凄く時間がかかった。。
最近のコメント