トップ «前の日記(2011/04/13 (水) ) 最新 次の日記(2011/04/15 (金) )» 編集 RSS feed

HsbtDiary


2011/04/14 (木) [長年日記]

[cucumber][capybara][ruby] cucumber と capybara

今のプロジェクトでは cucumber を使ったりしているので、cucumber-rails についてだいぶ一生懸命調べてみた。もちろん webrat ではなく capybara を使う前提。

@javascript について

cucumber で @javascript タグを付けると Capybara.javascript_driver に設定した値がそのシナリオに限って Capybara.current_driver と設定されて動く。つーか、Capybara.javascript_driver はここと capybara/rspec の :js => true でしか意味が無いものだった。な、なんだってー。

Capybara.javascript_driver は特に変更しない限り :selenium となる

DatabaseCleaner との連携

cucumber-rails ではデフォルトで DatabaseCleaner の hook が入っていて、特に指定しない場合は DatabaseCleaner.strategy に設定した値が使われる。

んが、@javascript (@selenium, @culerity とか)を使う場合は何故か

DatabaseCleaner.strategy = :truncation

と決め打ちの値が使われていまい、マスタ系のデータも含めて全部吹き飛ばしてしまう。これだとだいぶ困ってしまう場合があるので、そういう場合は features/support/env.rb とかに下のように設定する。

Before('@javascript') do
 DatabaseCleaner.strategy = :truncation, {except: %w[users]}
end

requests spec と違ってはまった部分は上の二つくらいかなあ。cucumber 本体はまだ調べてないけど、cucumber-rails は大体わかった。