rspec에서 예외가 발생했는지 확인

3005 단어 RSpecRails

이 기사에서 쓰는 것



다음과 같은 처리에서 ensure 처리가 실행되었는지 여부를 확인하는 방법
class Cat < ApplicationRecord
  validates :todays_foods, presence: true

  def sing!
    sing_a_song!
  ensure
    say_hello
  end

  def say_hello
    'にゃーん'
  end

  def sing_a_song!
    if todays_foods.empty?
      raise お腹が空いてたらエラー
      return
    end
    'にゃにゃにゃーん!'
  end
end

테스트 내용


  describe '#sing!' do
     context 'with exception error,' do
       let!(:cat) do
         cat = build(:cat, name: 'お腹すいた猫', todays_foods: 0)
         cat.save(validate: false) # validatesを無効にして作成。
         cat
       end
       it 'say にゃーん.' do
         expect do
           cat.sing!
         end.to raise_error(ActiveRecord::RecordInvalid).and(eq('にゃーん'))
       end
     end
  end

좋은 웹페이지 즐겨찾기