seach_formオブジェクトのテスト
検索項目が多い検索フォームを実装する時は、form_forヘルパーとActiveModel::ModelをMixinしたオブジェクトを使ってると思う。
(こういうやつ→http://kazuph.hateblo.jp/entry/2012/10/06/222831)
その検索フォームで使ってるオブジェクトのテストを書いてみた。
describe PresenterForm do fixtures :all subject { form_obj.presenters } describe 'ユーザ' do let(:form_obj) { PresenterForm.new(user_id: "1") } it { should include find_presenter } end describe '都道府県' do let(:form_obj) { PresenterForm.new(prefecture_id: "1") } it { should include find_presenter } end ....... end
find_presenterメソッドは、spec/support/配下に定義してとりあえずラップしてるだけ。
def find_presenter @_presenter ||= Presenter.find(1) end
FactoryGirlを使って、テスト毎にレコードをcreateしていると、
時間がかかるのと、レコードが増え過ぎてページネーションが起きて期待するレコードが隠れて期待通りの結果にならないことがあるので、
こういうケースはfixtureがいいと思ってる。
また、4行で1メソッドのテストが書けてるのと、deforeないし、describe毎に規則性があって読みやすい気がする。