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

Turnip

kbaba1001
December 08, 2014

 Turnip

TokyuRubyKaigi 08

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