'ActionMailer: How to test a mailer with parameters
I have a mailer looking like this:
class HelperMailer < ApplicationMailer
def reset_password(helper:)
@to = helper
@reset_password_token = params[:token]
mail_custom
mail(to: @to.email,
subject: 'Changement de mot de passe',
from: '[email protected]') do |format|
format.mjml
format.text
end
end
This is how I wrote my rspec test:
it 'sends email' do
mail = double
expect(HelperMailer).to receive(:reset_password).and_return(mail)
expect(mail).to receive(:deliver_later)
delete :destroy, params: { login: email }
end
This test works when I call the method like this:
HelperMailer.reset_password(helper: helper).deliver_later
This test fails when I call the method like this:
HelperMailer.with(token: 'blabla').reset_password(helper: helper).deliver_later
The error:
Failure/Error: expect(HelperMailer).to receive(:reset_password).and_return(mail)
(HelperMailer (class)).reset_password(*(any args))
expected: 1 time with any arguments
received: 0 times with any arguments
I can't find any documentation about ActionMailer::Parameterized testing. How should I test that my email is sent?
Thanks
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|
