2016-08-27 4 views
0

Meine Website hatte Dutzende von Instanzen von "link_to". Ich beschloss, die meisten von ihnen zu "button_to" für ein besseres Aussehen zu ändern. Die Zeilen meines Tests, die auf das Vorhandensein dieser Links hinwiesen, sind nicht mehr hilfreich.Rails: Kann ich auf das Vorhandensein eines button_to testen?

assert_select "a", :href => user_path(@seminar.teacher), text: "Your Teacher Profile", count: 2 

Der Test funktioniert nicht richtig mit

assert_select "button", etc... 

Gibt es eine Möglichkeit, den Test stellen Sie die button_to Instanzen zu finden? Von meinen ersten Recherchen scheint es so, als gäbe es das nicht.

Ich bin auch nur unter Berücksichtigung dieser Linien aus den Tests schneiden, da ich in einem anderen Artikel gelesen haben, die einfach auf das Vorhandensein von Anzeigeelementen Testen ist nicht eine sehr nützliche Art und Weise Schienen Tests zu verwenden.

Vielen Dank im Voraus für jede Einsicht!

+0

Sie auch wenig Stil hinzufügen können, um link_to wie Taste zu suchen. (Aber, wenn Sie button_to es Post-Anforderung standardmäßig machen, wo als link_to Anfrage standardmäßig bekommt.) –

+0

habe ich versucht, das Styling auf den ersten. Aber ich hatte Probleme mit dem Aussehen der Verbindung, nachdem sie besucht worden war. Schlägst du vor, zu "link_to" zurückzukehren, wenn ich das besuchte Styling richtig funktionieren lassen kann? –

Antwort

1

würde ich diese Tests entfernen, die nur auf das Vorhandensein eines Links testen. Es wäre besser, Tests zu schreiben, die auf diese Schaltflächen klicken und testen, was nach dem Klicken auf die Schaltfläche passiert. Benutzer interessieren sich mehr für das, was passiert, wenn auf eine Schaltfläche geklickt wird, als das Vorhandensein einer Schaltfläche auf einer Seite.

+0

Ich habe nach Möglichkeiten gesucht, meine Tests so zu simulieren, dass ich auf die Schaltflächen auf den Seiten klicke. Kennen Sie zufällig einen Artikel oder ein Tutorial, das sich mit dieser Art von Tests befasst? Oder kennen Sie die Syntax für einen solchen Test, damit ich nach Artikeln suchen kann? –

+0

Capybara ist ein beliebtes Werkzeug, um dies zu testen – kcdragon

+0

Ja. Capybara sieht genau wie ich aus. Vielen Dank! –

1

Dies ist ein Weg, auf das Vorhandensein von button_to zu testen, unter Verwendung Rails' Standardtestframework Minitest. In diesem Beispiel gibt es einen Knopf auf ein Show-Seite des Mitglieds ihren Mitgliedsstatus ändern inaktiv:

<%= button_to 'Change status to Inactive', membership_path(@membership), method: :patch, 
    params: { 'membership[status]' => 'Inactive'} %> 

Wenn Sie die Ansicht in einem Web-Browser überprüfen Sie den HTML (in Chrome zu sehen, oder klicken Sie auf die Schaltfläche Element dann wählen Sie Inspect) Sie werden sehen, dass button_to eigentlich ein Formular ist. Sie können also das Vorhandensein eines Formularelements mit einer Aktionseigenschaft prüfen, die dem spezifischen Membership_path entspricht.

membership = Membership.first 
assert_select 'form[action=?]', membership_path(membership.id) 

Wenn auch Sie testen wollen, dass der Text der Schaltfläche vorhanden ist, dann tun ein Block

membership = Membership.first 
assert_select 'form[action=?]', membership_path(membership.id) do 
    assert_select 'input[value=?]', 'Change status to Inactive' 
end 
Verwandte Themen