Bei früheren RSpec-Integrationstests mit: js => false (d. H. JavaScript wurde deaktiviert), liefen meine Tests einwandfrei. Doch für RSpec Tests, bei denen: js => true (und deshalb braucht Capybara WebKit zu verwenden), ich konsequent die folgende Fehlermeldung erhalten:capybaraWebKit kann Webseiten nicht besuchen, wenn RSpec-Tests ausgeführt werden, wenn: js => true
Unable to load URL: http://my.server:5000/auth/identity because of error loading http://my.server:5000/auth/identity: Unknown error
Noted dies auf einer Codezeile geschieht, die gerade arbeitet in Ordnung wenn: js => false (es ist Teil einer Methode, die einen Benutzer anmeldet, der für beide Integrationstests erforderlich ist).
Was ich versucht habe:
- ufw Verwendung (da ich auf Ubuntu laufen lasse), stellte ich sicher, dass Port 5000 geöffnet ist. Ich glaube jedoch nicht, dass dies das Problem war, da die Tests mit dem gleichen Port in anderen Tests funktionieren konnten, wenn: js => false
- Besuch anderer Seiten (zB http://my.server:5000/), aber das gleiche Fehlermeldung erscheint.
Ich versuchte, den Debug-Code, dass capybara WebKit documentation bietet:
Capybara::Webkit.configure do |config| config.debug = true
ich es in meinem spec_helper.rb setzen. Aber das gibt mir eine andere Fehlermeldung, nämlich: NoMethodError: undefined method configure' for Capybara::Webkit:Module
.
- Ich habe versucht, Anhalten und Neustarten Frühjahr nach these Anweisungen (
spring stop
undspring restart
verwenden). Immer noch funktioniert nichts. (Ich habe versucht, die Tests nach den beiden Befehle ausgeführt wird, und immer noch die gleiche Fehlermeldung beide Male)
Hinweise zu meiner Konfiguration:
Als ich das Projekt erhalten, das spec_helper.rb Datei hatte
Capybara.server_port = 5000
, und ich habe das nicht geändert. Diese Variable wird dann in allenvisit
-Methoden verwendet (z. B. "visit" http://my.server:# {Capybara.server_port}/").Es gibt keine Linie, die
Capybara.app_host = ______
Diese Webanwendung drei Sub-Domains umfasst hat, die ich brauche, um Zugang zu:
cms.my.server
,www.my.server
undadmin.my.server
. (Beachten Sie, dassmy.server
ein Stand-in für den tatsächlichen Servernamen ist, den ich aus rechtlichen Gründen nicht verwenden kann). Alle drei davon sind so eingestellt, dass sie in meiner Hosts-Datei zu 127.0.0.1 aufgelöst werden.
Beachten Sie auch, dass mein Teamkollege hat genau den gleichen Test zu arbeiten.
Danke. Ich habe meine Frage aktualisiert, um weitere Details zu den Vorgängen zu erhalten. Tut mir leid, dass ich diese Details nicht früher gemacht habe. Meine anfänglichen Versuche, Ihre Lösung zu implementieren, sind noch nicht vorbei, aber ich werde es weiter versuchen. Unter Berücksichtigung der Tatsache, dass ich 3 Subdomains habe, was sollte ich anstelle von "http: // my.server" für "Capybara.app_host" verwenden? – RyanQuey
@foxeshavedens Einstellung Capybara.app_host verhindert nur, dass Sie den vollständigen Servernamen für jede Besuchsanweisung angeben müssen - also, wenn "Capybara.app_host =" http: // admin.my.server "und" Capybara.always_include_port = true 'then' visit '/ go_here'' würde tatsächlich' http: //admin.my.server:/go_here 'besuchen. –
@foxeshavedens Und dann würden Sie wahrscheinlich ein paar Hilfsmethoden hinzufügen wollen, um es einfacher zu machen, zwischen Subdomains usw. zu wechseln. Es gibt einen guten Artikel über das Testen in Capybara mit Subdomains - https://robots.thoughtbot.com/acceptance- tests-with-subdomains –