Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Turnip

Avatar for kbaba1001 kbaba1001
December 08, 2014

 Turnip

TokyuRubyKaigi 08

Avatar for kbaba1001

kbaba1001

December 08, 2014
Tweet

More Decks by kbaba1001

Other Decks in Technology

Transcript

  1. Gherkin フィーチャ: kbaba1001として料理を作る シナリオ: ワインシリアルを作る 前提 "ワイン" がある かつ "シリアル"

    がある かつ 冷蔵庫が空である もし kbaba1001が空腹である ならば "ワインシリアル" を作ること
  2. スコープ付きステップ steps_for :food do step ":name がある" do |name| Food.create!(name:

    name) end end steps_for :tool do step ":name がある" do |name| Tool.create!(name: name) end end
  3. スコープ付きステップ @food シナリオ: ワインシリアルを作る 前提 "ワイン" がある かつ "シリアル" がある

    @tool シナリオ: ショートケーキを作る 前提 "電動ドリル" がある かつ "手動泡立て機" がある
  4. Placeholder step ":food が :count ある/いる" do |food, count| end

    placeholder :count do match /\d+(個|羽|丁)/ do |count| count.to_i end match(/(.+)/) {|count| 10 } end
  5. スコープが混ざる steps_for :food do step ":name がある" do |name| ...

    steps_for :tool do step ":name がある" do |name| ... # step を重複定義するのでエラー @food @tool シナリオ: ワインシリアルを作る 前提 "ワイン" がある かつ "電動ドリル" がある
  6. 回避方法 steps_for :food do step "食べ物 :name がある" do |name|

    ... steps_for :tool do step "道具 :name がある" do |name| ... @food @tool シナリオ: ワインシリアルを作る 前提 食べ物 "ワイン" がある かつ 道具 "電動ドリル" がある
  7. つらみ Custom Step Placeholder でスコ ープが使えない placeholder :count do match

    /\d+(個|羽|丁)/ do |count| count.to_i end match(/(.+)/) {|count| 10 } end
  8. 長い… placeholder :page do helper = Rails.application.routes.url_helpers match(/トップページ/) { helper.root_path

    } match(/ユーザーマイページ/) { helper.authenticated_root_path } match(/管理者マイページ/) { helper.admin_authenticated_root_path } match(/プロフィール登録ページ/) { helper.profile_path } # 中略... match(/(.+)/) {|page| page } end
  9. Step をまとめづらい シナリオ: もし "ワインシリアル" と表示すること かつ "ヘッダー" に "ワインシリアル"

    と表示すること step ':text と表示すること' do |text| expect(page).to have_content(text) end step ':parent に :text と表示すること' do |parent, text| within(parent) do send ':text と表示すること', text end end