2009-11-16 4 views
26

Quelles sont les meilleures pratiques et les outils pour tester l'envoi d'e-mails en utilisant rspec avec Rails? Par exemple, comment tester qu'un email a été envoyé ou que dois-je tester pour avoir des tests efficaces et une couverture acceptable?Comment tester l'envoi d'e-mails à l'aide de Rspec?

Si vous avez besoin d'un gars exemple, comment pourrais-je aller tester ceci:

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 

Répondre

24

email-spec ressemble à une bonne bibliothèque

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

+0

Thansk! L'as tu essayé? – marcgg

+0

Non, je ne l'ai pas essayé, mais cette bibliothèque encapsule la technique que j'utilise. – nicholaides

+0

J'ai utilisé email-spec avec RSpec et Cucumber, et il semble être exactement ce que vous cherchez. –

0

Que voulez-vous tester exactement?

Voulez-vous tester que l'e-mail est bien envoyé?

Je ne le recommande pas car cela rendra votre test plus lent et cela dépendra de la machine que vous utilisez pour effectuer vos tests (connexion réseau, serveur smtp).

Ce que je fais habituellement est de m'assurer que la tâche action/modèle/râteau du contrôleur qui envoie les courriels s'exécute correctement (c'est-à-dire sans erreur, je remplace l'appel final). Je m'assure également que le corps, le titre et les destinataires du courrier sont corrects.

Edit:

pas directement lié à des tests, mais je suis juste venu sur cette article. J'aime son point de vue sur l'utilisation du modèle pour envoyer des courriels. Donc, pour expliquer un peu plus dans les détails:

J'utiliserais le contrôleur pour configurer des variables de vue comme @body, @title, @recipient.

Donc, je voudrais tester que, compte tenu des paramètres corrects le modèle de courrier (qui est une vue) est rendu correctement. C'est là que des erreurs peuvent survenir de mon point de vue.

Je vais mettre à jour ce post avec un exemple quand je serai de retour à la maison plus tard aujourd'hui.

+0

Je ne sais pas vraiment ce que je veux tester ... Je suis à la recherche d'une couverture correcte (disons test si l'e-mail a été envoyé et qu'il contient des informations valides). Pourriez-vous me donner des indications sur la façon dont vous allez et faites ce que vous avez décrit dans votre dernier paragraphe? Je suis assez nouveau à rspec donc le plus d'informations que vous pouvez me donner le plus heureux je serai :) Merci – marcgg

+0

post mis à jour. Je vais essayer de poster des exemples de code ce soir –