2017-05-19 5 views
0

Ich habe einen Test in rspec geschrieben, die nach dem Klicken auf einen Link für einen Pfad überprüft:Capybara - Fang nicht Angular2 URL

click_link("Dew, Muntain A") 
expect(current_path).to eq(demographic_information_patient_path(1)) 

Hier, erhalte ich:

current_path = "/" 
demographic_information_patient_path(1) = "/patients/1/demographics" 

Daher ist der Test schlägt fehl. Was ich sehen kann, ist, nachdem der Link geklickt wurde, ist die nächste Seite in der Tat Demografie-Seite mit URL "/ patienten/1/demographics", aber irgendwie capybara ist nicht in der Lage, es zu finden.

HINWEIS: Wenn ich den Test und Druck request.url in Schienen-Controller manuell versuchen, erhalte ich "/patients/1/demographics"

Einen Grund, warum ich etwas weg kann, ist die Seite getroffen zu werden ist eine Angular2 Seite, ist es aus diesem Grunde Capybara kann die richtige URL nicht finden?

Mein Tries mit Capybara:

URI.parse(current_url).request_uri #gives "/" 
page.current_url #gives "/" 
u = page.execute_script("window.location.url"); #gives nil as expected 

Antwort

0

click_xxx Methoden des Capybara nur das Element klicken erwähnt. Sie warten nicht auf die Aktion, die durch den Klick verursacht wird, weil sie keine Ahnung haben, was diese Aktion sein wird. Aus diesem Grund sollten Sie nicht die eq Matcher mit current_path verwenden, vielmehr sollten Sie die have_current_path Matcher werden, der/retrying Verhalten hat warten Einbau-

expect(page).to have_current_path(demographic_information_patient_path(1)) 
+0

Dank für die Beantwortung. Ich habe den Code wie Sie vorgeschlagen geändert, aber ich bekomme diesen Fehler: ** Fehler/Fehler: expect (Seite) .to have_current_path (demographischer_Information_Patient_Pfad (1)) erwartet # zu Antwort auf 'has_current_path?' ** – Abhi

+0

@Abhi Welche Version von Capybara verwenden Sie? Der 'have_current_path'-Matcher wurde vor fast 18 Monaten in Version 2.5.0 hinzugefügt, möglicherweise müssen Sie aktualisieren. Alternativ haben Sie vielleicht nicht "capybara/rspec" in Ihrem spec_helper - https://github.com/teamcapybara/capybara#using-capybara-with-rspec? –