2011-05-25 24 views
5

Ben salatalık + webrat kullanıyorum ama ekstra Rails 3 uyumluluk ve javascript test gerekiyordu capybara + selenium değiştirildi. Şu anda Rails 3.0.7, Salatalık 0.10.2, caybara 1.0.0.beta1 kulüpler.Salatalık + Capibara + Selenium firefox example.com benim app değil

Sorun: Bir javascript senaryoyu çalıştırdığımda, firefox, raylar uygulamasının yerine "http://www.iana.org/domains/example/" veya "www.example.com" adresini açar.

Eminim ki eksik olan küçük bir ayardır, ama bunu bulamıyorum ve bu da birkaç günlüğüne beni şaşırttı.

Neyse, benim gemfile okur:

group :development, :test do 
    gem 'cucumber' 
    gem 'cucumber-rails', ">= 0.3.2" 
    gem 'pickle' 
    gem "launchy" 
    gem "rspec-rails" 
    gem "Selenium" 
    gem "selenium-client" 
    gem "selenium-webdriver" 
    gem "database_cleaner" 
    gem "factory_girl_rails" 
    gem "capybara" 
    gem "escape_utils" 
end 

özelliğidir:

@wip 
    @javascript 
    Scenario: Calculate 1 recipe and be deducted a credit 
    Given the following page records 
     | name | permalink | 
     | home | home  | 
    And the following role records 
     | name  | 
     | SuperAdmin | 
     | Admin  | 
     | Customer | 
    When I register "adam" with password "password" 
    And I go to the index 
    Then I should see "5 credits" 

firefox penceresi açar adım:

When /^I am logged in as "([^"]*)" with password "([^"]*)"$/ do |username, password| 
    unless username.blank? 
    visit(root_path) 
    fill_in "user_session_username", :with => username 
    fill_in "user_session_password", :with => password 
    click_button "login" 
    page.should have_content("Successfully logged in!") 
    end 
end 

benim özellikleri/destek/env. rb:

require 'cucumber/rails' 
    require 'factory_girl' 
    require 'ruby-debug' 
    require 'selenium/client' 
    # require 'capybara/cucumber' commented out because it doesn't want to work with it in 
    Capybara.default_driver = :selenium 

    Capybara.server_boot_timeout = 50 
    Capybara.default_selector = :css 

    begin 
     DatabaseCleaner.strategy = :truncation 
    rescue NameError 
     raise "You need to add database_cleaner to your Gemfile (in the :test group) if you wish to use it." 
    end 

komut istemi diyor ki:

When I register "adam" with password "password"  # features/step_definiti 
ons/web_steps.rb:229 
     no link with title, id or text 'register' found (Capybara::ElementNotFound 
) 
     (eval):2:in `click_link' 
     ./features/step_definitions/web_steps.rb:232:in `/^I register "([^"]*)" wi 
th password "([^"]*)"$/' 
     features\credit_behaviour.feature:30:in `When I register "adam" with passw 
ord "password"' 

Ben HERHANGİ Yardım büyük takdir söyleyerek, bu nedenle herhangi bir öneri lütfen bana üzerinde kolay olacak Raylar ve Ruby için oldukça yeni.

cevap

14

Tamam, işe koyuldum. İşte yaptığım şey.

require "selenium-webdriver" 

ve 'ziyareti root_url' ile adımlarımı değişti:

env.rb eklendi Bunu ben değiştirdi herşey olduğunu düşünüyorum

visit root_path 

.

Bunu gerçekten denediğimi (ve gördüğüm diğer her sorunun/düzeltmenin diğer tüm izinlerini) düşündüm. Bunun üzerine 3 gün israf ettiğime inanamıyorum, sonra cevabı kamuoyuna açıkladıktan birkaç saat sonra buldum.

+0

Bu, her testte "url" yerine "yol" kullandığınız anlamına mı geliyor? Veya daha iyi bir yol buldunuz (belki ev sahibi ya da bir şeyleri değiştiriyor muydunuz?) –

+0

evet _url yerine _path kullanıyorum. Bunu yapmanın 'doğru' yolu olup olmadığından emin değilim ama şimdilik işe yarıyor. – RickyD

+0

Jnicklas'a göre, _path kullandığınızdan ve istenmeyen sonuçlara sahip olabileceğinden _url kullandığınızdan emin olmak istersiniz. – Galaxy

İlgili konular