rspec で raise_error を expect する時に
備忘録
rspec でバリデーションエラーが発生することをテストしたい場合、
expect(@facility.phone_numbers.create!(phone_number: '000-0000-00a1', main: true)).to raise_error(ActiveRecord::RecordInvalid)
ではなくて、
expect {@facility.phone_numbers.create!(phone_number: '000-0000-00a1', main: true)}.to raise_error(ActiveRecord::RecordInvalid)
としないといけない。
つまり、 expect
を ()
ではなくて、 {}
で囲まないといけない。
所感
考えてみれば ()
だと単純に create!
が失敗してるのでその時点でテストは終了してるから {}
のブロックで囲んでその結果を expect
しなければならないんだなあ。