erwartet ich, dass bestimmte Daten zu machen bin versucht hat durch eine einzige Aktion unverändert bleiben:mehr not_to Änderung Erwartungen in rspec
expect {
# running migration and user reload here
}.not_to change(user, :avatar_url).from(sample_avatar_url).and change(user, :old_avatar).from(nil)
sample_avatar_url
eine Zeichenfolge am Anfang der Spec-Datei definiert ist.
Grundsätzlich möchte ich überprüfen, ob die avatar_url
und old_avatar
unberührt bleiben von dem, was im expect
Block passiert.
Der Ausgang aus dem obigen Code ist:
expect(...).not_to matcher.and matcher
nicht unterstützt wird, da es ein wenig eine Mehrdeutigkeit erzeugt. Definieren Sie stattdessen negierte Versionen aller Matchings, die Sie negieren möchten, mitund verwenden Sieexpect(...).to matcher.and matcher
.
es mit dem ersten Beispiel Vereinfachen der Trick funktioniert. Vielen Dank! – abpetkov
Gern geschehen - bitte beachten Sie, dass etwas weniger überprüft wird, da nur geprüft wird, ob ein bestimmter Wert gesetzt ist, nicht, dass er nicht von etwas anderem auf diesen Wert geändert wurde - Wenn das für Ihren Anwendungsfall ausreichend ist. –
Platzieren von 'RSpec :: Matchers.define_negated_matcher (: not_change,: change)' in rails_helper.rb gab meine RSpec superpowers. – Epigene