[Ruby on Rails 3, Ruby on Rails 4] Cucumber を試す
どんなものかさわってみた。
Contents
Gemfile
group :test do
gem 'cucumber-rails', '1.2.1', :require => false
gem 'database_cleaner', '0.7.0'
end
% bundle
% rails generate cucumber:install
create config/cucumber.yml
create script/cucumber
chmod script/cucumber
create features/step_definitions
create features/support
create features/support/env.rb
exist lib/tasks
create lib/tasks/cucumber.rake
gsub config/database.yml
gsub config/database.yml
force config/database.yml
使い方
フィーチャーファイルの作成
% subl features/signing_in.feature
Feature: Signing in
Scenario: Unsuccessful signin
Given a user visits the signin page
When he submits invalid signin information
Then he should see an error message
Scenario: Successful signin
Given a user visits the signin page
And the user has an account
When the user submits valid signin information
Then he should see his profile page
And he should see a signout link
ステップファイルの作成
% subl features/step_definitions/authentication_steps.rb
Given /^a user visits the signin page$/ do
visit signin_path
end
When /^he submits invalid signin information$/ do
click_button "Sign in"
end
Then /^he should see an error message$/ do
page.should have_selector('div.alert.alert-error')
end
Given /^the user has an account$/ do
@user = User.create(name: "Example User", email: "user@example.com",
password: "foobar", password_confirmation: "foobar")
end
When /^the user submits valid signin information$/ do
fill_in "Email", with: @user.email
fill_in "Password", with: @user.password
click_button "Sign in"
end
Then /^he should see his profile page$/ do
page.should have_selector('title', text: @user.name)
end
Then /^he should see a signout link$/ do
page.should have_link('Sign out', href: signout_path)
end
テストの実行
% bundle exec cucumber features/
Using the default profile...
Feature: Signing in
Scenario: Unsuccessful signin # features/signing_in.feature:3
Given a user visits the signin page # features/step_definitions/authentication_steps.rb:1
When he submits invalid signin information # features/step_definitions/authentication_steps.rb:5
Then he should see an error message # features/step_definitions/authentication_steps.rb:9
Scenario: Successful signin # features/signing_in.feature:8
Given a user visits the signin page # features/step_definitions/authentication_steps.rb:1
And the user has an account # features/step_definitions/authentication_steps.rb:13
When the user submits valid signin information # features/step_definitions/authentication_steps.rb:18
Then he should see his profile page # features/step_definitions/authentication_steps.rb:24
And he should see a signout link # features/step_definitions/authentication_steps.rb:28
2 scenarios (2 passed)
8 steps (8 passed)
0m0.882s