10
votes

RSPEC envoie des emails (ne pas stocker dans Action.Deliveries) - ne sais pas pourquoi?

IM à l'aide de RSPEC et lorsque je exécute RAKE SPEC, le mailer utilisateur envoie un courrier électronique via SMTP et ne stocke pas l'e-mail dans l'action ActionMailer :: Base.deliveries-Array (appelé par un observateur utilisateur) ...

pourrait Vous me donnez un indice pourquoi? xxx

config-fichiers: xxx


1 commentaires

Quelle est votre configuration de courrier dans votre environnement de test?


5 Réponses :


15
votes

Je suis tellement stupide ... avais "ActionMailer :: base.delivery_mesthod =: smtp" dans mon initialisateur Setup_mail.rb ... Aaargh ....


2 commentaires

J'ai eu le même problème et j'ai déplacé ce paramètre sur config / environnements / production.rb et le modifié sur config.action_mailer.delivery_method =: smtp . Merci d'avoir posté votre réponse et de me sauver un peu de temps et de débogage; Tu n'es définitivement pas stupide: D


Vous savez dans le monde, Dump Personnes est partout ... y compris moi!



10
votes

Élaborer sur la solution à ce problème un peu plus:

Dans votre configuration / envioments / test.rb, par défaut, vous devez avoir la ligne config.action_mailer.delivery_method =: test

Qu'est-ce que cela fait est que cela dit ActionMailer de ne pas envoyer le courrier électronique normalement, mais plutôt stocker l'e-mail envoyé dans le tableau ActionMailer :: base.deliveries . Ceci est utile pour les tests car vous pouvez indiquer combien d'emails ont été snt à l'aide de la méthode de contrôle, de comptage, de longueur sur le tableau ActionMailer :: Base.Deliveries Array.

Toutefois, si vous définissez la méthode de livraison à quelque chose comme config.action_mailer.delivery_method =: smtp , qui pourrait écraser votre précédent livraison_method =: test; Par conséquent, votre ActionMailer :: base.deliveries ne sera pas rempli.

J'avais fait exactement cela tout en utilisant Mailcatcher pour afficher mes emails envoyés, ce qui entraîne l'échec de mes tests, même si j'étais certain que des courriels étaient correctement envoyés!

Alors, assurez-vous que vous ne définissez pas de livreur_method autre que: test dans votre environnement de test.

En tant que note latérale: Si vous utilisez du congé, vous pouvez vérifier le tableau devise.mailer.deliveries .


0 commentaires

2
votes

Dans mon cas, j'avais xxx

et j'ai également eu xxx

qui en vigueur (je suppose) n'envoie pas le e-mail et aussi ne le supporte pas dans ActionMailer :: base.deliveries Array soit.


0 commentaires

0
votes

Un autre gotcha possible ... Ne pas commettre l'erreur, comme je l'ai fait, d'inclure xxx

dans config / environnement.rb, que j'ai mal cru à tort serait remplacé par le plus configuration / environnements spécifiques / test.rb. Suppression de la ligne ci-dessus à partir de configuration / environnement.rb corrigé le problème pour moi.


0 commentaires

0
votes

Dans mon cas, j'ai oublié de .Deliver à l'intérieur de mon spec.rb . C'est bizarre, cependant, je reçois un msg stdout de rails (rails 5) de "e-mail livré" même sans cela, qui était assez confus. En regardant votre spécification m'a fait me rendre compte que je l'ai oublié. Merci!


0 commentaires