📝
【RSpec】raise_errorで異常系のテストをする
実現したいこと
notnull指定のものを指定しなかった場合にエラーが出ることをspecでテストしたい。
raise_error
raise_error
matcher は、あるコードブロックがエラーを発生させることを指定するために使用します。基本的な形式としては、何らかのエラーが出た場合に通過します!
基本形
expect { raise "エラー!" }.to raise_error
ただ、例外クラスを指定しないままだと警告文が出ちゃうので、理由がない限りは例外クラス名を指定した方が良いかと思います。
例:
expect { raise "エラー!" }.to raise_error( 例外クラス名 )
で、NotNullが出る場合にテストを通過させたい場合は以下のような形になります。
expect { raise "エラー!" }.to raise_error(ActiveRecord::NotNullViolation)
参考
Discussion