Ich versuche zu behaupten, ob alle Ergebnisse entweder Wert A oder Wert b haben. Meine Einrichtung ist wie folgt:Wie ketten/compound matchers in Capybara?
def results
all('.results li')
end
def apply_filter(filter)
filter_by(filter)
end
def have_product_type(type)
have_selector('.type', text: type)
end
Nun muss ich behaupten, dass alle Ergebnisse entweder vom Typ A oder Typ B sind
Ich möchte so etwas wie dies zu tun:
apply_filter('A')
apply_filter('B')
expect(results).to all(have_product_type('A').or have_product_type('B'))
Denke nicht, dass Compound-Matcher noch in Capybara unterstützt werden. Es funktioniert für eine Behauptung zu einer Zeit. Für beispiel dies funktioniert:
expect(results).to all(have_product_type('A'))
Ich habe auch versucht normalen RSpec Matcher aber dann nicht Capybara Verkettungs passen nicht gut mit ihm.
Zum Beispiel funktioniert das auch nicht, da die Methoden Hilfsmethoden sind, die in feature specs via config.include enthalten sind. Ich erhalte nicht definierte Methode Fehler als die have_product_type
Methode in globalen Namensraum ist
expect(results.all {|result| result.have_product_type('A') or result.have_product_type('B')}.to be_truthy
Wie kann ich nach jedem Zustand testen?
Dank Tom habe ich die Regex-Version für jetzt werde ich die Verbindung Matcher versuchen. sehen Sie, ob das gut mit Warten funktioniert: 0. Danke. – Rahul