RSpec:複数の変更を期待
機能仕様でフォームを送信するときに、モデルの多くの変更を確認したいと思います。たとえば、ユーザー名がXからYに変更され、暗号化されたパスワードが任意の値で変更されたことを確認したいと思います。 それについてはすでにいくつか質問があることは知っていますが、私にふさわしい答えは見つかりませんでした。最も正確な答えは、ChangeMultipleここでMichael Johnstonによるマッチャーのようです:RSpecが2つのテーブルの変更を期待することは可能ですか?。その欠点は、既知の値から既知の値への明示的な変更のみをチェックすることです。 より良いマッチャーがどのように見えるかについて、いくつかの擬似コードを作成しました。 expect { click_button 'Save' }.to change_multiple { @user.reload }.with_expectations( name: {from: 'donald', to: 'gustav'}, updated_at: {by: 4}, great_field: {by_at_leaset: 23}, encrypted_password: true, # Must change created_at: false, # Must not change some_other_field: nil # Doesn't matter, but want to denote here that this field exists ) …