Comment tester les e – mails envoyés par WordPress?
Crochet.
Le test d’unit é WordPress fournit un outil de simulation pour les instances phpmailer utilisées par wp \ u mail. Lorsque vous utilisez WP _ unittestcase, l’Instance mockphpmailer est remplacée par l’instance globale phpmailer couramment utilisée par WP mail (). Mockphpmailer étend phpmailer et suit tous les e – mails envoyés par lui. Cela nous permet de tester les résultats des paramètres WP _ mail et PHP Mailer passés à WP mail. Cet article décrit principalement comment le configurer et l’utiliser. La précision de la simulation limite sa faisabilité. En utilisant la simulation de courrier wp \ u utilisée par Core, nous savons que nos tests sont aussi précis que les tests de courrier wp \ u pour WordPress Core. Ça ne les rend pas parfaits. En gros, cela en fait une méthode d’essai assez fiable. À la fin de cet article, il y a des liens vers d’autres outils que vous pouvez utiliser pour ajouter des niveaux de test supplémentaires à la méthode, mais je vais commencer par la méthode.
Nous pouvons récupérer cette instance en utilisant la fonction tests _ Retrieve phpmailer instance (). Voyons ce qu’on va faire. Créer un cas de test avoir une classe abstraite dans un test plug – in est un modèle commun qui est votre cas de test de base. Cette classe étend WP _ unittestcase. Par conséquent, si nécessaire, la classe peut être étendue pour créer la base d’un type particulier de test. Commençons par créer le cas email _ test: <?php
/**
* Caso di prova — passaggio 1
*/
la classe astratta Email_Test_Case estende WP_UnitTestCase{
/** @inheritdoc */
funzione pubblica setUp(){
genitore::setUp();
}
/** @inheritdoc */
funzione pubblica tearDown(){
genitore::tearDown();
}
} In questo momento, questo non aggiunge nulla di nuovo, è solo un inizio. I metodi setUp e tearDown che stiamo sovrascrivendo dalla classe genitore vengono utilizzati per ripristinare tutto tra ogni singolo test. Poiché WordPress utilizza un globale per PHPMailer, il finto mailer può tenere traccia di ogni e-mail inviata. È utile, ma vogliamo anche essere più sicuri che tutto venga ripristinato tra un test e l'altro.
Possiamo usare la funzione reset_phpmailer_instance per inserire una nuova istanza di MockPHPMailer nel global utilizzato da wp_mail. Facciamolo durante l'installazione e lo smontaggio, solo per sicurezza. Réinitialiser _ Mailer ();
}
Hériter du document
Teardown () {fonction publique
Parent:: teardown ();
$this – > Reset message ();
}
\/ * *
Réinitialiser le programme de courrier
* *
Renvoie booléen
* \/
Fonction protégée Reset _ Mailer () {
Renvoie Reset _ phpmailer instance ();
}
\/ * *
Trouver un faux facteur
* *
* Wrap tests _ Retrieve phpmailer instance ()
* *
Retour à mockphpmailer
* \/
Get _ Mock Mailer () {protected Functions
Retourner les tests _ retourner phpmailer instance ();
}
J’ai créé
C’est le sujet. Nous pouvons l’utiliser pour obtenir le sujet du message \
$Object = ‘Object’;
$message = ‘message’;
Slug _ send email ($recipient, $Object, $message);
$Mailer = tests _ Retrieve phpmailer instance ();
$this – > assertsame ($subject, $Mailer – > get _ sent () – > Subject);
Dans ce test, nous définissons tous les paramètres de la fonction à tester comme variables. Nous les Utilisons donc pour appeler des fonctions. Ensuite, nous obtenons une instance du programme false mail et obtenons l’objet. Il est plus facile de conserver les arguments d’une fonction dans une variable comme valeur attendue d’une assertion.
Tester le corps d’un courriel le corps d’un courriel sera testé de la même façon. Je ne pense pas qu’il soit juste de tester une ligne. Donc, pour ce test, nous allons utiliser plus de lignes. Cela rend les choses un peu compliquées parce que les blancs sont compliqués. L’une des affirmations supplémentaires que vous obtenez avec les cas de Test wordpress est le test asserted discardwhite Space. Ceci vérifie que le contenu de la chaîne est le même, moins les espaces: tester les destinataires de courriel tester les destinataires de courriel est complexe. Le courriel peut être fourni sous forme d’adresse électronique ou de nom . De plus, nous pouvons passer une seule adresse e – mail ou un tableau d’une ou plusieurs adresses e – mail au paramètre to de WP _ mail, puis au paramètre to de la fonction que nous testons.
Nous devons tester chaque cas. Commençons par la simplicité, pas de noms, juste des e – mails. Pour ce test, nous utilisons la fonction utilitaire get _ recipient () du programme false mail pour obtenir les destinataires. Dans ce contexte, la fonction renvoie un objet de classe standard. Nous pouvons vérifier les propriétés de l’adresse: une fois que nous savons qu’elle fonctionne, nous pouvons ajouter de la complexité en définissant le nom et le courriel. Nous avons besoin d’une déclaration similaire au dernier test, mais
Ou mettre en évidence les problèmes éventuels dans un résumé utile. L’e – mail est difficile, et aider à le tester n’est pas de nommer des choses ou de désactiver la mise en cache, mais j’ai découvert que l’e – mail est l’une des choses les plus complexes que les développeurs traitent. Compte tenu de ce que j’ai fait: le plug – in de formulaire de contact et l’application Web de courriel, j’ai passé beaucoup de temps avec eux. Ces outils m’aident à contrôler la situation pendant les tests en envoyant mes propres messages et en ne redimensionnant plus mes messages. Au fil du temps, la situation s’est compliquée. Lorsque les tests automatisés d’intégration et les tests manuels de projet changent, il suffit d’utiliser un courriel ou un outil similaire sur Acid. Quoi que vous décidiez de faire pour maintenir la fiabilité du système de courrier électronique WordPress, j’espère que cela vous aidera.