2009-11-16 10 views
26

Was sind die besten Praktiken und Tools zum Testen der E-Mail-Versand mit Rspec mit Rails?Wie testet man E-Mail-Versand mit Rspec?

Zum Beispiel, wie kann ich testen, dass eine E-Mail gesendet wurde oder was ich testen sollte, um effiziente Tests und eine akzeptable Abdeckung zu haben.

Wenn euch ein Beispiel benötigen, wie würde ich gehen und testen Sie dies:

class UserMailer < ActionMailer::Base 

def jobdesc_has_been_reviewed(user, title) 
    @body[:title] = title 
    @body[:jobdesc] = jobdesc 
    @body[:url] = "http://" + user.account.subdomain + "." + Constants::SITE_URL + "/jobdescs/#{jobdesc.id}" 
end 

end 

Antwort

24

E-Mail-Spec sieht aus wie eine gute Bibliothek

http://github.com/bmabey/email-spec

+0

Thansk! Hast du es versucht? – marcgg

+0

Nein, ich habe es nicht versucht, aber diese Bibliothek kapselt die Technik, die ich verwende. – nicholaides

+0

Ich habe Email-Spec mit RSpec und Cucumber verwendet, und es scheint genau das zu sein, wonach Sie suchen. –

0

Was tun Sie genau testen?

Möchten Sie testen, dass die E-Mail wirklich gesendet wird?

Ich empfehle es nicht, da es Ihren Test langsamer macht und es hängt wirklich von der Maschine ab, die Sie verwenden, um Ihre Tests (Netzwerkverbindung, SMTP-Server) auszuführen.

Was ich normalerweise tue ist sicherzustellen, dass die Controller-Aktion/Modell/Rake-Aufgabe, die E-Mails senden, korrekt ausgeführt wird (dh ohne Fehler, stub ich den letzten Sendeanruf). Ich stelle auch sicher, dass der Text, der Titel und die Empfänger für die Mail korrekt sind.

Edit:

nicht direkt im Zusammenhang mit Versuchen, aber ich kam gerade über diese article.

Ich mag seine Sicht der Verwendung des Modells, um E-Mails zu senden. So erklären Sie ein wenig mehr im Detail:

Ich würde den Controller verwenden, um Ansicht Variablen wie @ body, @title, @ recipient.

So würde ich testen, dass bei gegebenen korrekten Parametern die Mail-Vorlage (die eine Ansicht ist) korrekt gerendert wird. Dies ist, waren Fehler aus meiner Sicht passieren können.

Ich werde diesen Beitrag mit einem Beispiel aktualisieren, wenn ich später zu Hause bin.

+0

Ich weiß nicht wirklich, was ich testen wollen ... Ich bin für eine korrekte Berichterstattung suchen (lassen Sie uns Test sagen, ob die E-Mail hat gesendet worden ist und dass es gültige Informationen hat). Könnten Sie mir einen Hinweis geben, wie Sie gehen und tun, was Sie in Ihrem letzten Absatz beschrieben haben? Ich bin relativ neu zu rspec, so dass mehr Informationen, die Sie mir geben können, desto glücklicher bin ich :) Danke – marcgg

+0

Post aktualisiert. Will versuchen, heute abend Codebeispiele zu posten –