본문 바로가기

개발노트/Ruby

Rspec 에서 어떤 Mailer 를 이용하여 발송될지에 대한 테스트

it '메일의 종류는 A 메일이다' do
  expect { subject }.to have_enqueued_job.on_queue('mailers').with('AMailer', any_args)
end

간단한 건데도, 삽질을 좀 많이 했네.

rails 에서의 mail 발송(deliver 메소드)은 결국 queue 를 통해서 이뤄지므로, queue 에 넣는 내용을 확인하면 된다.

"mailers" 라는 이름의 큐로 enqueue 될 땐, Mailer 클래스의 이름이 전달인자 중 가장 처음으로 들어가기 때문에, with 메소드의 전달인자로 mailer 이름 문자열을 넣어주면 된다.