0

Ich habe solche Fehler. Hier ist mein Code:Capybara click_link funktioniert falsch

it "shows places sorted by date of creation" do 
    click_button(I18n.t("models.places.actions.index.sort_by")) 
    click_link(I18n.t("models.places.actions.index.date_of_creation")) 

    sorted_places_names = places.map(&:name).reverse 
    link_names = all("a.place-link").map(&:text) 

    expect(link_names).to eq(sorted_places_names) 
end 

Und mein Problem ist, dass Link klicken hier muss params senden: „?by_created_at: true“ und Controller Antwort mit sortierten Orten nach Erstellungsdatum, in Nachkommen Reihenfolge. Mein Problem ist, wenn Capybara auf diesen Link klickt, GET-Anfrage nur Pfad, ohne Params benötigt. Ich benutze Poltergeist hier.

Auch ich habe solche Test:

it "shows orders today" do 
    today_order.customer.reputations << create(:reputation, place: place) 

    visit place_statistics_loyalty_path(place) 
    click_link(I18n.t("statistics.loyalty.today")) 

    expect(page).to have_selector("#order_#{today_order.id}") 
end 

Es testet ein ähnliches Verhalten aus. Und es funktioniert richtig, aber hier verwende ich js nicht. Ist es Javascript-Treiberproblem? Danke. Sorry für schlechten Text, es ist meine erste Frage.

+0

Sie für alle danken, mein Problem war in diesem factory erzeugt Datensätze mit identischen created_at Feld –

Antwort

0

Was Sie suchen tun Poltergeist der Verwendung „send_key“ -Methode wie in der Dokumentation hier gezeigt:

https://github.com/teampoltergeist/poltergeist#sending-keys

die Tasten Einstellung mit dieser Methode und dann mit einem Klick auf den Link fortfahren sollte funktionieren.

+0

danke aber Fehler war, dass Factory Girl Datensatz erzeugt mit identisch created_at Feld, und das ist mein Test fehlgeschlagen. –

0

Sind Sie sicher, dass Sie tatsächlich Poltergeist für diesen Test verwenden, da es keine js: true oder driver: :poltergeist Metadaten gibt? Wenn es nicht Poltergeist verwendet und tatsächlich nur den rack_test Treiber verwendet, dann würde kein JS ausgeführt werden und Sie würden wahrscheinlich das Verhalten sehen, das Sie sehen.

Wenn Sie den Poltergeist-Treiber verwenden, ist es möglich, dass Sie eine Wettlaufsituation haben, weil click_button asynchron ist, was dazu führen kann, dass der Parameter by_created_at nicht gesetzt wird, bevor das Link-Klicken tatsächlich erfolgt. Sie testen können, ob das Problem durch einen sleep 2 zwischen den click_button und click_link Anrufe setzen

+0

danke, aber Fehler war in diesem Factory Girl generiert Datensatz mit identischen created_at Feld, und das ist mein Test fehlschlägt. –