2013-07-04 12 views
9

Ich habe ein Testprogramm, das das iOS-Gerät eines Benutzers simuliert, indem es Datenblöcke an einen Rails-Server sendet. Dieses Programm funktioniert außerhalb des Testens. Innerhalb des Tests läuft das Programm sofort ab, da der Server nicht gefunden werden kann.Wie kann ich den aktuellen Hostnamen und Port beim Ausführen von Capybara mit Poltergeist erhalten?

Meine Konfiguration, in env.rb:

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

Innerhalb des Tests habe ich Dinge ausprobiert wie

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

und so weiter, aber die sind alle leer. Doing:

setzt Capybara.current_session

eine Speicheradresse erzeugt, damit ich weiß, dass die aktuelle Sitzung arbeitet.

Dies ist mit Capybara wie so in der gemfile ein:

gem 'capybara', '~> 2.0.2 

ich einige Fragen auf dieser Basis gesehen habe, aber ihre Antworten für mich einfach nicht funktionieren. Insbesondere scheint Capybara weder den aktuellen Host oder die URL, wie ich sie angegeben habe, einzustellen, noch erlaubt es mir tatsächlich, den Inhalt der aktuellen Sitzung zu sehen. Wie kann ich das beheben und einen bestimmten Port und eine bestimmte URL angeben?

Antwort

15

Für Capybara < 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 

ich die Antwort hier: Cucumber/Capybara -- how to get the host and port of the current execution

+0

Ich nehme an, du hast Recht, aber ich haven‘ t testete die Antwort. Ich bin nicht mehr an diesem Projekt :) – mmr

1
Capybara.current_session.driver.server.port 
Verwandte Themen