2010-12-15 58 views
1

J'ai un test PHPUnit qui effectue les opérations suivantes:tests email PHPUnit

  • remplir un formulaire sur une page Web en utilisant Selenium RC
  • (L'application envoie un e-mail à un compte gmail)
  • se connecter au compte gmail avec imap_open()
  • vérifier que certaines chaînes existent dans l'e-mail

Mon problème est que mon test échoue aléatoirement parce que je n'attends pas que l'email soit envoyé. Que feriez-vous dans cette situation?

+0

Êtes-vous des tests pour détecter la vitesse ou la précision? – DampeS8N

+0

test de précision – nnyby

+1

Je ne suis pas sûr que tester si un email arrive devrait être dans un test unitaire dans cette situation. Les tests unitaires doivent vérifier la logique de votre application et non la fiabilité d'un service tiers. – rojoca

Répondre

4

N'utilisez pas un serveur de courrier externe. Configurez fakemail. La version Python est plus facile à utiliser. J'ai utilisé fakemail pendant un certain temps et mes tests php les plus simples sont exécutés très rapidement (pas de latence externe), et ils sont répétables à 100%.

Je conserve un ensemble différent de tests si je veux réellement tester la partie d'envoi de courrier de mon script. À mes yeux, le «vérifier que les chaînes sont là» et «vérifier que l'email a été envoyé à Gmail» sont deux points de défaillance différents, et devraient être divisés en différents tests.

+0

http://fakemail.sourceforge.net pointe vers http://www.lastcraft.com/fakemail.php qui, au moment où cela a été posté, a disparu de l'Internet. Jamais peur; vous pouvez toujours trouver une copie de la source ici: http://sourceforge.net/projects/fakemail/files/fakemail-python/ – thisgeek

+0

Sur Github: https://github.com/matschaffer/fakemailo – Susan