📝

【RSpec】raise_errorで異常系のテストをする

2022/11/25に公開

実現したいこと

notnull指定のものを指定しなかった場合にエラーが出ることをspecでテストしたい。

raise_error

raise_errormatcher は、あるコードブロックがエラーを発生させることを指定するために使用します。基本的な形式としては、何らかのエラーが出た場合に通過します!

基本形

expect { raise "エラー!" }.to raise_error

ただ、例外クラスを指定しないままだと警告文が出ちゃうので、理由がない限りは例外クラス名を指定した方が良いかと思います。
例:

expect { raise "エラー!" }.to raise_error( 例外クラス名 )

で、NotNullが出る場合にテストを通過させたい場合は以下のような形になります。

expect { raise "エラー!" }.to raise_error(ActiveRecord::NotNullViolation)

参考

https://relishapp.com/rspec/rspec-expectations/v/3-1/docs/built-in-matchers/raise-error-matcher

Discussion