Cómo probar los correos electrónicos enviados por WordPress

Es importante recibir correos electrónicos a través de su sitio de WordPress. Si alguien le informa que hay algo mal con sus productos, o simplemente para decir que está haciendo un gran trabajo, debe asegurarse de recibir esos correos electrónicos. Con demasiada frecuencia, nuestras pruebas para averiguar si los correos electrónicos funcionan en un sitio de WordPress o en un complemento de WordPress implica completar un formulario, verificar nuestro correo electrónico y ver si se ve correcto. Esto no es efectivo y requiere una inversión proactiva de tiempo humano. Escribamos un programa para hacerlo mejor y más consistente.
Este elemento se trata de usar correos electrónicos de prueba. La mayor parte se tratará de escribir pruebas de integración automática con phpunit. También hay una sección corta de herramientas relacionadas. Cubre fácilmente las pruebas locales y las pruebas intercluido. Estas son capas que recomendaría agregar después de que esta capa esté en su lugar. Las pruebas en este artículo utilizarán wp_unittestcase, que extiende la prueba básica de la unidad PHP. Antes de comenzar, deberá configurar las pruebas como configuraría la CLI WP para usted. Esto fue tratado en un artículo de torque reciente, Iain Poulson, y es posible que desee leer la serie de Pippin Williamson sobre pruebas unitarias en WordPress.
Simulando phpmailer Al escribir pruebas que se integran con otros sistemas, es común crear objetos “simulados”. Estos son objetos que tienen la misma API pública que el objeto para el que lo representa, pero no crean efectos secundarios y no agregan complicaciones adicionales de la dependencia de la prueba. Una verdadera simulación es realmente posible cuando todo el código involucrado está orientado al objeto y la API pública de cada objeto está definida por una interfaz. Eso no describe WordPress. Esto no significa que no pueda crear falso en WordPress. Las bibliotecas de BrainMonkey y WP_MOCK ayudan a burlarse de muchas API de WordPress, incluidos los ganchos. Las tareas unitarias de WordPress se entregan con una herramienta de burla para el tribunal PhPMailer que usa WP_Mail. Cuando se usa WP_UNITTESTCase, el Tribunal Global PhPMailer reemplaza una instancia de MockphpMailer que normalmente usa WP_Mail (). MockphpMailer extiende PhPMailer y también sigue todos los correos electrónicos enviados a través de él. Esto nos permite probar el resultado de WP_Mail y PhPMailer dados a los argumentos transmitidos a WP_Mail. Este elemento se trata principalmente de cómo configurar y usarlo. La precisión de un simulacro limita su utilidad. Usando la simulación para wp_mail que usa el núcleo, sabemos que nuestras pruebas son tan precisas como las pruebas wp_mail del núcleo de WordPress. No los hace perfectos. Básicamente hablando, lo convierte en una forma bastante confiable de probar. Al final de este artículo, hay enlaces a otras herramientas que puede usar para agregar capas de prueba adicionales sobre este método, pero comenzaría con este método.
Podemos asumir esa instancia usando las pruebas_rteve_phpmailer_instance (). Veremos cómo hacer eso ahora. Crear un caso de prueba es un modelo ordinario para tener una clase abstracta en su prueba de complemento cuál es su prueba básica. Esta clase expandiría WP_UNITTESTCASE. Luego, si es necesario, puede expandir esa clase para crear una base para un tipo particular de prueba. Comencemos creando correo electrónico_test_case: <? Php/**
* Caso de prueba — Paso 1
*/
Clase abstracta Correo electrónico_test_case extiende wp_unittestcase {
/** @Herititdoc*/
Configuración de función pública () {
Padre :: setup ();
}
/** @Herititdoc*/
la función pública STAPDOWN () {
Padre :: STATDOWN ();
}
} En este momento, esto no agrega nada nuevo, es solo un comienzo. Los métodos de configuración y desmontaje que reemplazamos en la clase principal se utilizan para restablecer todo entre cada prueba individual. Debido a que WordPress usa una versión global para PhPMailer, el correo puede seguir cada correo electrónico enviado. Es útil, pero queremos asegurarnos de que todo se restablezca entre las pruebas.
Podemos usar la función RESET_PHPMailer_Instance para colocar una nueva instancia de MockpMaler en el global utilizado por wp_mail. Hagamos esto en la configuración y el desmontaje, solo para estar a salvo. reset_mailer ();
}
/** @Herititdoc*/
la función pública STAPDOWN () {
Padre :: STATDOWN ();
$ this-> reset_mailer ();
}
/**
* Restablecer el correo
*
* @return bool
*/
La función protegida reset_mailer () {
return reet_phpmailer_instance ();
}
/**
* Obtenga un correo simulado*
* Pruebas de envoltura
*
* @return mockpmailer
*/
Get_mok_mailer () función protegida {
Devuelve las pruebas_retrieve_phpmailer_instance ();
}
} Creamos un método para restablecer el modelo por dos razones. En primer lugar, repito el código. Más importante aún, más tarde podría expandir esta clase para ejecutar pruebas usando otra forma de vencer al PhPMailer u otra forma de enviar correo electrónico que PhPMailer. Esto permite que las subclases cambien este comportamiento en esas situaciones.
Estas razones explican por qué también creamos un envoltorio en torno a la función de hacerse cargo de la corte MockpMailer. Además, mi modo tiene una anotación PhPDocBlock más explícita que los usos básicos, que facilita su uso en PhpStorm. Al escribir pruebas de integración para WP Mail antes de continuar, necesitaremos algo para probar. Para crear una función que envíe un correo electrónico y nos permita cambiar quién las direcciones, el sujeto y el cuerpo: la función SLUG_SEND_EMAIL ($ TO, $ SUMPLEA, $ MENSAJE, $ Headers = ”) {
wp_mail ($ a, $ sujeto, $ mensaje, $ encabezado);
} Esta función no devuelve nada. No podemos probar la unidad. Pero podemos probar los efectos que tiene en el sistema con el que integra: el WordPress PhpMailer. Creemos una prueba de integración para cada una de las tres características: destinatario, sujeto y mensaje.
Todas estas pruebas pueden vivir en una clase, creemos, extendiendo nuestro caso de prueba: ahora podemos escribir algunas pruebas. Probar el tema del correo electrónico para comenzar con el tema del correo electrónico porque es el más simple. Tendremos que enviar el mensaje, luego comparar el tema que fue capturado como sujeto del objeto de correo electrónico simulado con lo que esperábamos que se envíe. Para esto, podemos usar el método get_sent () del correo simulado. Esto devuelve el primer mensaje enviado a través de este correo simulado. Opcionalmente, podemos solicitar otros mensajes, pero reiniciamos intencionalmente el correo entre las pruebas. Get_sent () Devuelve una serie de información de correo electrónico. Uno de los índices es el sujeto. Podemos usar esto para obtener el tema del mensaje “enviado”. <? Php
Función pública temas_test () {
$ to = 'alguien W. alguien ‘;

$ sujeto = ‘sujeto’;
$ mensaje = ‘mensaje’;
Slug_send_email ($ to, asunto, $ mensaje);
$ Mailer = tests_retrieve_phpmailer_instance ();
$ this-> afirmarsame ($ temas, $ mailer-> get_sent ()-> asunto);
} En esta prueba, hemos configurado todos los argumentos para la función que probamos en variables. Luego los usamos para llamar a la función. Luego capturamos el Tribunal Mailer simulado y obtenemos su tema. Mantener los argumentos para nuestra función en variables facilita su uso como un valor esperado para una afirmación.
Probar el cuerpo de correo electrónico Prueba del cuerpo de correo electrónico será similar.No creo que una prueba de línea sea una prueba correcta.Entonces, para esta prueba, usaremos más líneas.Esto hace que las cosas sean un poco complicadas porque la comparación de los espacios blancos es difícil.Una de las declaraciones adicionales que obtenemos del uso del caso de prueba de WordPress es la prueba ASDDISSCARDHITESPACE.Esto prueba el contenido de las cadenas como el mismo, menos el espacio en blanco: probar el destinatario del correo electrónico que es difícil probar el destinatario del correo electrónico.Los correos electrónicos se pueden proporcionar como una dirección o nombres de correo electrónico .También podemos transmitir una sola dirección de correo electrónico o una o más matriz de correo electrónico al argumento de WP_Mail y, por lo tanto, el argumento a la función que probamos.
Necesitaremos una prueba para cada uno de estos casos.Comencemos simples, sin nombre, solo envíe un correo electrónico.Para esta prueba, utilizamos la función de utilidad get_creciptive () del correo simulado para alcanzar.En este contexto, esa función devuelve un objeto de clase estándar.Podemos verificar la propiedad de la dirección: una vez que sabemos que funciona, podemos agregar una capa de complicaciones configurando el nombre y el correo electrónico.Necesitaremos una declaración similar a la última prueba, pero esta vez verificaremos el nombre en lugar de la dirección.Ahora, para nuestra última prueba, enviaremos el correo electrónico a más destinatarios.Yendo más allá en este momento, debe preguntarse qué sucede si hay más destinatarios en una combinación de las dos formas.O lo que sucede si algunos de los mensajes de matriz no son válidos.Hay buenos pensamientos.Deberías agregar esas pruebas.¿Pero CC, BCC, archivos adjuntos y otros encabezados?
Recomendaría echar un vistazo a las pruebas de correspondencia del núcleo y ver cómo puede usar un enfoque similar al código real que prueba. Otras herramientas de prueba de correo electrónico Este elemento se trata de probar la integración de correo electrónico de WordPress. Probamos su integración de código con la función de correo electrónico de WordPress. Esta es una parte importante de probar la funcionalidad del correo electrónico. Una ventaja de este enfoque, que no se necesitan servidores externos, también es una limitación. Una vez que pasan estos tipos de pruebas, es importante probar servidores reales y clientes reales. Mailhog es una herramienta útil para el desarrollo local. Evita el envío efectivo de correos electrónicos, por otro lado, se almacenan localmente. Obtenga una interfaz de uso simple y extensible que ofrezca una forma similar a un cliente de correo electrónico para ver los correos electrónicos enviados a su entorno local. MailTrap es un servicio que ofrece un servidor SMTP real diseñado para ser utilizado en pruebas automáticas. Para ser honesto, esta es la única herramienta en este artículo que no he usado. Lo presento porque está en mi lista de herramientas que me gustaría explorar más a medida que mejora este tipo de prueba en mi pila, así que quería compartir. Lo que utilicé y gané mucho valor, como parte del control de calidad manual, se usa por correo electrónico sobre ácido. Este servicio es como Browserstack pero por correo electrónico. Envía su correo electrónico a una sola dirección y le muestra cómo se ve en todos los clientes de correo electrónico e incluso resalta posibles problemas en un resumen útil.

Copyright statement: Unless otherwise noted, this article is Collected from the Internet, please keep the source of the article when reprinting.

Check Also

gkOVSBm5B8SgiXmo

Shopify vs WooCommerce – ¿Cuál es la mejor plataforma?(Comparación)

Shopify vs WooCommerce

Leave a Reply

Your email address will not be published. Required fields are marked *