2013-07-04 6 views
9

Ho un programma di test che imita il dispositivo iOS di un utente inviando blocchi di dati a un server di rotaie. Questo programma funziona bene al di fuori dei test. All'interno del test, il programma scade immediatamente poiché non riesce a trovare il server.Come posso ottenere l'hostname e la porta correnti quando si esegue Capybara con Poltergeist?

La mia configurazione, in env.rb:

require 'capybara/poltergeist' 
Capybara.javascript_driver = :poltergeist 
Capybara.server_port = 3123 
Capybara.app_host = "http://0.0.0.0:3123" 

All'interno del test, ho provato cose come

puts Capybara.current_session.current_host 
puts Capybara.current_session.current_url 

e così via, ma quelli sono tutti in bianco. Fare:

mette Capybara.current_session

produce un indirizzo di memoria, quindi so che la sessione corrente è in funzione.

Questo è con Capybara impostato in questo modo nella Gemfile:

gem 'capybara', '~> 2.0.2 

Ho visto diverse domande sulla base di questo, ma le loro risposte non funzionano per me. In particolare, Capybara non sembra impostare l'host o l'url corrente come ho specificato, né è in realtà mi permette di vedere il contenuto della sessione corrente. Quindi, come posso risolvere questo problema e specificare una porta e un URL particolare?

risposta

15

Per capibara < 2.0:

Capybara.current_session.driver.rack_server.host 
Capybara.current_session.driver.rack_server.port 

Capybara 2.0:

Capybara.current_session.server.host 
Capybara.current_session.server.port 

ho trovato la risposta qui: Cucumber/Capybara -- how to get the host and port of the current execution

+0

Suppongo che tu abbia ragione, ma mi rifugio' t testato la risposta. Non sono più in questo progetto :) – mmr

1
Capybara.current_session.driver.server.port