2012-03-27 13 views
0

サイトのテストフレームワークを構築するために、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 

答えて

1

rack-testはラックアプリケーションのみをテストできるためです(例:rack-test)。あなたのRuby On Railsウェブサイト)。ブラウザベースのソリューションではなく、SeleniumとWebKitがあります。だからrack-testは外部のウェブサイト(あなたの場合はGoogle)にアクセスできません。

+0

ありがとう!それは知って良いです。 – Nick

関連する問題