che sto cercando di fare in modo certo i dati sono rimarrà invariato da una singola azione:Aspettatevi aspettative multipla cambiamento not_to 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
è una stringa definita all'inizio del file spec.
Fondamentalmente, voglio verificare se il avatar_url
e old_avatar
rimangono intatti da ciò che sta accadendo nel blocco expect
.
L'output dal codice sopra è:
expect(...).not_to matcher.and matcher
non è supportato, in quanto crea un po 'di un'ambiguità. Invece, definire le versioni negate di qualsiasi matcher che si desidera negare conRSpec::Matchers.define_negated_matcher
e utilizzareexpect(...).to matcher.and matcher
.
Semplificare con il primo esempio fa il trucco. Grazie! – abpetkov
Prego, basta notare che controlla un po 'meno dato che controlla solo che sia impostato un valore specifico, non che non sia stato modificato da qualcos'altro a quel valore - Se questo è sufficiente per il tuo caso d'uso. –
L'inserimento di 'RSpec :: Matchers.define_negated_matcher (: not_change,: change)' in rails_helper.rb ha dato i miei superpoteri RSpec. – Epigene