RSpecでraise_errorマッチャを使う

RSpecには例外発生時にマッチするraise_errorマッチャというものがある
よくわからずにsubject内で例外を発生させるテストをした

    context '例外発生した場合' do
      subject { raise StandardError.new('例外発生') }
      it { is_expected.to raise_error StandardError, '例外発生' }
    end

ところが、テストが通らない
いろいろ調べてみたところ、例外を発生している箇所をlambdaで囲う必要があった

    context '例外発生した場合' do
      subject { lambda { raise StandardError.new('例外発生') } }
      it { is_expected.to raise_error StandardError, '例外発生' }
    end

これでテストが通るようになる
Back