How to test ActionMailer
Railsに付属のactionmailer.Railsプロジェクトではなく,単独でも使うことができる.erbテンプレートが使えたり,htmlメールが送れるため,簡単なバッチをつくるときによく利用する.最小限の利用サンプルはこちら.
テストできるのは,メール送信数と送信先,送信元,件名,本文.まず,spec_helperの設定.
ActionMailer::Base.delivery_method = :test
ActionMailer::Base.perform_deliveries = true
送信数.意図した数のメールが送られているか.
it "sends an mail" do
expect(ActionMailer::Base.deliveries.count).to eq(1)
end
送信先.意図したアドレスに配信されたか.
it "renders the receiver mail" do
expect(ActionMailer::Base.deliveries.first.to).to eq(["[email protected]"])
end
送信元.意図したアドレスから配信されているか.
it "renders the sender mail" do
expect(ActionMailer::Base.deliveries.first.from).to eq(["[email protected]"])
end
件名.意図した件名で配信されているか.
it "set the success subject" do
expect(ActionMailer::Base.deliveries.first.subject).to match(/[Success]/)
end
本文.意図した本文で配信されているか.
it "sends the hello body" do
expect(ActionMailer::Base.deliveries.first.body).to match(/Hello, #{user}./)
end
今回のテストはすべてここにまとめてある.