Cucumber の日付のステップ定義

Rails で Cucumber を使っていて、デフォルトのステップ定義はどこでしてるんだろう?と気になったので調べてみました。結論から言うと Rails.root/features/step_definitions 以下に入っています。てっきり gem の方にあるのかと思って、そっちを必死に grep してました。

さて、ここでインストール時に日本語を選択していた場合 web_steps_ja.rb というファイルができるのですが…

もし /^"([^"]*)"の日付として"([^"]*)"を選択する$/ do |date_label, date|
  When %{I select "#{date}" as the "#{date_label}" date}
end

この手の日付に関する定義が、元になっている web_steps.rb に含まれていません。gem のバージョンは以下の通り。

  • cucumber 0.9.4
  • cucumber-rails 0.4.2

日付のタグに設定される id の形式は created_on という名前であれば created_on_1i, created_on_2i... のように決まっているので、次のように書けばテストは一応成功します。

もし    "cost_occured_on_1i"から"2010"を選択する
かつ    "cost_occured_on_2i"から"11"を選択する
かつ    "cost_occured_on_3i"から"7"を選択する

しますが、いかにも結果を知ってからテストを書いている感がしていまいちですね…