Ich versuche, diesen Code zu testen:Wie testen Fehlerbehandlung mit RSpec?
mail = Mail.new
mail.from = @from
mail.to = to
<...>
begin
mail.deliver
rescue
return false
else
return true
end
für Fehler mit RSpec Handhabung:
it 'should return true if success' do
expect(mailer.send_confirmation_request(token)).to be true
end
it 'should return false if fails' do
allow_any_instance_of(Mail).to receive(:deliver).and_raise('Mail error')
expect(mailer.send_confirmation_request(token)).to be false
end
Aber es funktioniert nicht: zweiter Test nicht bestanden. Warum funktioniert allow_any_instance_of
(und allow(Mail)
) nicht auf diese Weise? Wie kann das getestet werden? Sollte ich meinen Code reparieren, um mehr testbar zu sein? Ich kann es testen, indem ich Mail # new mit rspec double stubbing, aber es führt dazu, alle Mail-Methoden zu stubben und sieht nicht wie ein richtiger Weg aus.
Wenn es egal ist, verwende ich mikel's mail gem und mache Tests nach seiner recommendations.
Sie haben definitiv Recht. [Hier ist] (https://github.com/mikel/mail/blob/master/lib/mail/mail.rb) passiert es auf der 50. Saite. Wirklich unerwartet. – Michael