ものすごく大量の項目があるフォームのテストをCapybaraでやるときに、1つずつfill_in
とかしてたら死にますよね。永遠に帰れないし、そのテスト保守したくない・・・。そんな人の心強い味方がformulaic(読めない)です。
みんな大好きFactoryGirlでお馴染みのthoughtbot製です。
使い方
RSpecのspec/spec_helper.rb
にこんな設定を加えて、
# spec/spec_helper.rb RSpec.configure do |config| config.include Formulaic::Dsl end
feature 'New user registration' do scenario 'successfull sign up' do visit sign_in_path fill_form(:user, { name: 'Caleb', email: 'caleb@thoughtbot.com', 'Terms of Service': true }) click_on submit(:user) expect(page).to have_content t('user.create.success') end end
こんな感じで、fill_form
というメソッドでフォームの項目を埋めちゃうことができます。
FactoryGirlと組み合わせれば、
fill_form(:user, attributes_for(:user))
という感じに、FactoryGirl側にデータを持っていくことができます。便利ですなー。
100項目ぐらいあるフォームのテストで悩んでいる人は、お試しあれ。