2017-04-13 7 views
1

Ich entwickle eine sinatra-basierte Web-Anwendung und verwende ausgiebig Tests, um sicherzustellen, dass alles vor der Bereitstellung funktioniert. Als Testframeworks verwende ich minitest :: specs und capybara mit webkit.Ändern der Basis-URL für Capybara-Abnahmetests

Mein Problem ist, dass nach dem Einsatz meine Anwendung läuft mit einer Basis-URL wie folgt aus:

http://cool.server.net/to-the-application/ 

Aber während der Tests Capybara nimmt eine saubere Basis-URL mit einem Pfad zu / nicht zu to-the-application/. Das bedeutet, dass ich nicht nach Bugs suchen kann, bei denen vergessen wird, die Basis-URL in Links und Aktionen zu setzen.

Für trockene Tests folgte ich Changing the base URL for Rails 3 development und änderte meine config.ru, aber ich habe keine Möglichkeit gefunden, Capybara eine andere Basis zu verwenden.

Irgendwelche Ideen, um das zu lösen?

+0

Ich bin daran interessiert, beim Testen der Anwendung zu ändern, als ob es nicht im Stamm der Server-URL residiert. Bearbeitete die Frage, um (hoffentlich) das klarer zu reflektieren ... – Jan

Antwort

1

Wenn Sie den rack_test-Treiber verwenden, wird der Hostname vollständig ignoriert, so dass Sie nichts ändern können. Wenn Sie einen anderen Treiber verwenden, können Sie

Capybara.app_host = "http://cool.server.net" 

Hinweis angeben, die cool.server.net allgemein seit dem ist auf 127.0.0.1 lösen müßte, wo Capybara bindet die App getestet.

Update: Nachdem ich darüber nachgedacht habe, bin ich nicht sicher, dass das was du wolltest. Wenn Capybara deine App unter /to-the-application mounten soll, musst du dein eigenes App-Objekt erstellen, das du Capybara.app zuweisen kannst - siehe https://github.com/teamcapybara/capybara/blob/2.13_stable/lib/capybara/rails.rb#L4 für wie Capybara derzeit die App mountet.

+0

Danke für die Antwort, ich werde in das Capybara-App-Objekt graben. Ich hatte gehofft, jemand anderes hätte das getan und kam zurück, um davon zu erzählen ... 8) – Jan

Verwandte Themen