サイトのテストフレームワークを構築するために、CapybaraでCucumberを使用しています。キュウリのCapybaraドライバーを切り替えるためにフックを使用する方法を見つけました。 JavaScriptをテストしていないときにRackTestを使用できるようにするには、RackTestがページをレンダリングしないため、RackTestが高速であると考えていたからです。今私は3つの同一のテストを作成してGoogleにジャンプし、そのタイトルがGoogleと言うことを確認します。各テストは異なるドライバを使用します。 SeleniumとWebKitのテストは正常に動作しますが、RackTestは失敗します。 "" Google ""というタイトルが表示されます。私は私の特徴のコピーとステップと宝石のテストをこの投稿に添付しました。cucumber - RackTestがSeleniumとWebKitの両方が成功したというテストでは機能していません
特集:
Feature: Rack Test
In order to run test faster
As a tester
I want to use Rack Test to preform all non-javascript related test
Scenario: Visit a page and check title
When I go to "http://www.google.com"
Then I should see the title "Google"
@firefox
Scenario: Visit a page and check title in Firefox
When I go to "http://www.google.com"
Then I should see the title "Google"
@webkit
Scenario: Visit a page and check title in WebKit
When I go to "http://www.google.com"
Then I should see the title "Google"
ステップ:
When /^I go to "(http:\/\/[^"]*)"$/ do |url|
visit url
end
Then /^I should see the title "([^"]*)"$/ do |title_cont|
page.should have_selector "title", text: title_cont
end
フック:
Before('@firefox') do
Capybara.current_driver = :selenium
end
Before('@webkit') do
Capybara.current_driver = :webkit
end
After('@firefox, @webkit') do
Capybara.use_default_driver
end
Gemfile:
group :test do
gem 'capybara'
gem 'capybara-webkit'
gem 'cucumber'
gem 'cucumber-rails'
gem 'database_cleaner'
gem 'factory_girl_rails'
gem "rack-test", require: "rack/test"
gem 'rspec'
gem 'selenium-webdriver'
end
ありがとう!それは知って良いです。 – Nick