Capybaraでのフォーム入力を楽にしてくれるGem、formulaic

ソフトウェア開発

ものすごく大量の項目があるフォームのテストを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: '[email protected]', '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項目ぐらいあるフォームのテストで悩んでいる人は、お試しあれ。