前回の続き。
cucumber事始め - うんたらかんたらRuby - Rubyist
railscasts
railscastsの
2つのシナリオ(一覧表示を追加、新規追加を修正)を日本語で書くとこうなる。
Railscasts - Beginning with Cucumber
修正前
#features/manage_articles.feature Feature: Manage articles 管理者は、ブログの記事を管理できる Scenario: 記事を登録する Given "新規記事"ページを表示している When "タイトル"に"タイトル 1"と入力する And "コンテンツ"に"コンテンツ 1"と入力する And "送信"ボタンをクリックする Then "タイトル 1"と表示されていること And "コンテンツ 1"と表示されていること Scenario: 記事を削除する Given 以下の記事を作成する: |title|content| |タイトル 1|コンテンツ 1| |タイトル 2|コンテンツ 2| |タイトル 3|コンテンツ 3| |タイトル 4|コンテンツ 4| When 3番目の記事を削除する Then 以下の記事を表示していること: |Title|Content| |タイトル 1|コンテンツ 1| |タイトル 2|コンテンツ 2| |タイトル 4|コンテンツ 4| #step_definitions/article_steps.rb Given /^以下の記事を作成する:$/ do |articles| Article.create!(articles.hashes) end When /^(\d+)番目の記事を削除する$/ do |pos| visit articles_path within("table tr:nth-child(#{pos.to_i+1})") do click_link "削除" end end Then /^以下の記事を表示していること:$/ do |expected_articles_table| expected_articles_table.diff!(tableish('table tr', 'td,th')) end
修正後
#features/manage_articles.feature Feature: Manage articles 管理者は、ブログの記事を管理できる Scenario: 記事一覧を参照する Given 以下の記事を作成する: |title|content| |ピッツァ |コンテンツ 1| |フランスパン |コンテンツ 2| When "記事一覧"ページを表示する Then "ピッツァ"と表示されていること And "フランスパン"と表示されていること Scenario: 記事を登録する Given 記事を全て削除する And "記事一覧"ページを表示している When "新規記事"ページを表示する And "タイトル"に"ジャガイモ"と入力する And "コンテンツ"に"美味しいジャガイモ料理"と入力する And "送信"ボタンをクリックする Then "記事作成が正常に行われました"と表示されていること And "ジャガイモ"と表示されていること And "美味しいジャガイモ料理"と表示されていること And 記事の件数は1件となる Scenario: 記事を削除する Given 以下の記事を作成する: |title|content| |タイトル 1|コンテンツ 1| |タイトル 2|コンテンツ 2| |タイトル 3|コンテンツ 3| |タイトル 4|コンテンツ 4| When 3番目の記事を削除する Then 以下の記事を表示していること: |Title|Content| |タイトル 1|コンテンツ 1| |タイトル 2|コンテンツ 2| |タイトル 4|コンテンツ 4| #step_definitions/article_steps.rb Given /^以下の記事を作成する:$/ do |articles| Article.create!(articles.hashes) end When /^(\d+)番目の記事を削除する$/ do |pos| visit articles_path within("table tr:nth-child(#{pos.to_i+1})") do click_link "削除" end end Then /^以下の記事を表示していること:$/ do |expected_articles_table| expected_articles_table.diff!(tableish('table tr', 'td,th')) end Given /^記事を全て削除する$/ do Article.delete_all end Then /^記事の件数は(\d+)件となる$/ do |count| Article.count.should == count.to_i end