2011-11-30 7 views
13

estoy usando el pepino y el capibara. en una plataforma de rieles 3.0.9. Estoy consiguiendo este caso de prueba fallará: registro es:pepino y capibara, cómo abrir url externo o visitar fuera url

(::) failed steps (::) 

No route matches "/wiki/Baltimore_Ravens" (ActionController::RoutingError) 
<internal:prelude>:10:in `synchronize' 
./features/step_definitions/web_steps.rb:20:in `/^(?:|I)am on (.+)$/' 
features/annotate.feature:7:in `Given I am on a web page' 

Failing Scenarios: 
cucumber features/annotate.feature:11 # Scenario: launch annotation/ logged in 

6 scenarios (1 failed, 5 skipped) 
63 steps (1 failed, 62 skipped) 

los archivos web_steps conseguida esta pieza de código:

19 Given /^(?:|I)am on (.+)$/ do |page_name| 
20 visit path_to(page_name) 
21 end 

la annotate.feature archivo tiene este código:

7 Given I am on a web page 

"una página web" se define en el apoyo/paths.rb como:

when /a web page/ 
    'http://en.wikipedia.org/wiki/Baltimore_Ravens' 

obviamente esto es una URL externa. Quiero abrirlo y el capibara y el pepino no me permitirán hacerlo. ¡así que ayúdame a encontrar la manera de abrir la url externa en el caso de prueba de pepino!

+0

¿por qué necesita estar en una página externa a prueba su aplicación? –

+0

su característica de nuestra aplicación que el usuario puede lanzar mientras que r ella estaba en alguna otra página externa! –

+0

Baltimore Ravens! – jphager2

Respuesta

19

Carpincho utiliza RackTest como el controlador predeterminado, y este controlador no permite visitar las URL externas (es decir, probar aplicaciones remotas).

Si quiere visitar las URL externas (para probar, por ejemplo, que su aplicación redirige correctamente), usted tiene básicamente dos opciones:

1/utilizar otro conductor, como por ejemplo el selenio:

before do 
    Capybara.current_driver = :selenium 
end 

Luego, en el código, puede llamar a la url de esta manera:

visit 'http://en.wikipedia.org/wiki/Baltimore_Ravens' 

O, si se establece la app_host por defecto de este modo:

Capybara.app_host = 'http://en.wikipedia.org' 
Capybara.run_server = false # don't start Rack 

A continuación, puede llamar a la url:

visit '/wiki/Baltimore_Ravens' 

Puede configurar el controlador de host y aplicación en su spec_helper.rb para permitirles a nivel mundial a través de todos ustedes especificaciones:

Capybara.configure do |config| 
    config.current_driver = :selenium 
    config.run_server = false 
    config.app_host = 'http://en.wikipedia.org' 
end 

2/utilice capybara-mechanize

+0

Puedo añadir la joya de selenio para mi Gemfile y esto se resuelva! Muchas gracias –

Cuestiones relacionadas