Pruebas unitarias de complementos de WordPress con phpunit

Cuando trabaja en complementos y comienza a ingresar nuevas funciones, es una buena práctica asegurarse de que la lógica existente no esté interrumpida. Sin las pruebas adecuadas, hay altas posibilidades de que las soluciones simples se conviertan en una pesadilla de codificación de espagueti. Entonces, en el artículo de hoy, le mostraré cómo aprovechar las pruebas unitarias para sus complementos de WordPress. Aunque hay muchos marcos de prueba, permaneceremos con Phunit, porque es el marco oficial elegido para WordPress. Las pruebas unitarias de WordPress que usan Funit generalmente están orientadas al arado, pero puede haber momentos en los que desea usarlas para los temas. Sin embargo, como regla general, su tema no debe proporcionar características similares a los complementos.
Observaremos brevemente la configuración, las características de las pruebas unitarias en WordPress y, finalmente, probaremos un complemento simple. Nota: Este elemento es para desarrolladores avanzados de WordPress. Sin embargo, si usted es un usuario principiante o intermedio, los conceptos discutidos aquí pueden ayudarlo a comprender lo que está sucediendo detrás de escena al crear una aplicación de WordPress. Necesitará conocimiento laboral sobre WordPress, PHP y PHPIT antes de hundirse en esta publicación. Si no está seguro o desea una actualización, le recomiendo leer lo siguiente:
Desarrollo de WordPress para principiantes: nociones introductorias
Desarrollo de WordPress para principiantes: PHP Learning
Desarrollo de WordPress para principiantes: temas de construcción
Desarrollo de WordPress para principiantes: widgets y menús
Desarrollo de WordPress para principiantes: complementos de construcción
Nociones introductorias con phpunit
Pruebas unitarias: ¿estamos en la misma página? Más que nada, las pruebas unitarias se refieren a mejorar la calidad de su software. El propósito es reducir los errores utilizando un enfoque sistemático. Ahorre tiempo y esfuerzo ejecutando pruebas para diferentes áreas de su aplicación y puede confiar en sus cambios. Implica transmitir los datos de entrada para diferentes escenarios, condiciones al límite y garantizar el hecho de que la salida o los datos devueltos son siempre los esperados. La función probada está desconectada por el resto del sistema. Es diferente de una prueba de integración en la que probamos cómo funcionan los componentes o las funciones. Cuando ingresa nuevos cambios, solo tiene que ejecutar las pruebas anteriores. Lo que funcionó antes debería seguir funcionando y sabrá de inmediato si no funcionó.
La forma en que esto ayuda al secreto del secreto detrás de las pruebas unitarias exitosas es escribir módulos más pequeños y menos complejos en su aplicación principal. Esto permite probar ciertos componentes de forma aislada. Cada función debe realizar una sola tarea y hacerlo bien. De esta manera, no rompe más instrucciones condicionales y no alcanza el código de espagueti. Ciertamente puedes escribir más código, pero un código más legible y de mejor calidad. Y está de acuerdo con el principio de codificación seca (no se repita):
“Cada conocimiento debe tener una representación única, sin ambigüedad, con autoridad dentro de un sistema”. Ahora que estamos en la misma página, comencemos. Requisitos preliminares para comenzar, necesitará tres cosas: Phunit: una biblioteca para probar el código PHP
Interfaz de línea de comandos WP-Cli-WordPress para integrar sus pruebas con una instalación de WordPress
Una configuración de WordPress.
Recomiendo utilizar un entorno de desarrollo como VVV, porque la configuración de lo anterior llevará algún tiempo y no desea inflar su entorno de trabajo diario. Consulte la configuración de nuestra publicación VVV para el desarrollo de WordPress para obtener detalles sobre cómo usar VVV.
Una nota para los usuarios de Windows: no hay problema con Vagant y VVV en Windows. Y si está en Microsoft Windows 10, puede crecer por un solo paso: Microsoft ha iniciado el subsistema de Windows para Linux (WSL) para que ahora pueda tener una fiesta de Ubuntu en Windows. Esto le permitirá ejecutar (casi) todos los comandos de Linux nativos en Windows, así como interactuar con archivos en su sistema de Windows. Los usuarios de Mac y Linux siempre han tenido Shell integrado. Usaré WSL solo para demostrar que realmente funciona y que ya no tiene que instalar una VM separada para obtener el shell. Así es como puedes configurar WSL.
Flujo de trabajo de desarrollo Use NetBeans con Vagrant y VVV en el subsistema de Windows para Linux. Esto me da un gran flujo de trabajo en el que puedo desarrollar y solucionar problemas con NetBeans en mi sistema host y ejecutar pruebas y servidores utilizando el entorno virtual VVV. Todo se sincroniza automáticamente entre los sistemas host e invitados. Por lo tanto, todas las pruebas que escribo usando NetBeans o cualquier editor en mi host también se sincronizan. También mantengo mis complementos y temas fuera de la configuración de WordPress y los cargo en el VVV WordPress Target Court utilizando la configuración CustomFile en Vagrant. Esto me permite usar GIT (control de versiones) sin tener que sincronizar los archivos básicos de WordPress. Así es como se ve mi configuración:
Los complementos y los temas se encuentran en una carpeta fuera de WordPress (en el host) y se cargan en la instalación de WordPress en VM utilizando la siguiente configuración personalizada:
Cargue los rawrits esenciales/985573A774713EF6E4B0917F7B58496B
Trabajaré con un complemento simple, Phpunit-Demo-Plagin y una instancia de WordPress “Test.dev” usando VV creado para realizar pruebas unitarias. Además, para cargar el proyecto de prueba.

Se carga los principales rawrits/f2554434cf8d3cfc1e1afc3d94adb78.
Nota: debe crear enlaces simbólicos dentro del auto host:

Para Linux/Mac, use LN -S Target Link_Name
Para Windows, use la línea de comando para ejecutar mkink /d link_name objetivo
Configuración de Phunit para su complemento de WordPress con VVV Tenemos todas las herramientas necesarias: PHP, PHUPIT, WP-CLI, etc. WP-CLI también instala una configuración básica para el marco de prueba, que es útil para ejecutar pruebas en los archivos básicos de WordPress. Para extender esto para complementos, toma algunos pasos adicionales. Se reduce a tres comandos:> $ CD/SRV/www/WordPress-Installation
> $ WP El complemento de andamio prueba su_plin
> $ sh wp-account/plugins/your_plin/bin/install-wp tests.sh

Phpunit sobrescribirá la base de datos de WordPress, por lo que es mejor usar una nueva instalación o crear una copia de seguridad de la existente. No hace falta decir que no lo ejecuta en su entorno de producción. Me referiré a las carpetas como director cuando trabajo en VM Linux. Pasemos esto en detalle. También puede consultar el manual WP-CLI. Paso 1 Para configurar Phunit con su complemento de WordPress, encienda la instancia de Vagrant y luego ingrese SSH con SSH. Una vez que haya llegado, navegue por el director raíz de la instalación de WordPress.
En mi caso, trabajo con la instalación de WordPress test.dev> $ cd/srv/www/test/htdocs/
Paso 2 Su complemento (en su automóvil anfitrión) ya debería estar disponible en el director de WP-Contents. Para configurar las pruebas unitarias para el complemento, necesitamos usar el comando de andamio WP-CLI, de la siguiente manera: el complemento de andamio WP prueba su_plin> $ WP, complemento de andamio Phunpit-Demo-Plugin
Esto es lo que acaba de pasar:
Si ahora revisa el director de su complemento, notará algunos archivos adicionales, el más importante en la prueba subdirector. PhPUnit ejecutará automáticamente todas las pruebas (los archivos prefijados con Test-) que encuentra en el directorio de prueba. El descubrimiento automático tiene lugar a través de phpunit.xml, que es el archivo manifiesto principal que le dice a Phupit dónde encontrar pruebas y cómo se configuran las cosas. Cuando se realizan las pruebas, Phupit lo usará para nuestro entorno de prueba. Si desea utilizar una cancha de DB funcional, asegúrese de haber hecho una copia de seguridad. Necesitamos ejecutar el script Install WP Tests.sh ubicado en “bin/” que también fue creado por el comando WP Shaffold: Bash Plugin_dir/bin/install-wp test.sh db_name db_user db_host versión
Db_name es el nombre de la base de datos de prueba (¡todos los datos se eliminarán!)

Db_user es mysql nombre de usuario

Db_pass es contraseña de usuario mysql

Db_host es el host del servidor MySQL

La versión es la versión de WordPress
> $ Bash bin/install-wp tests.sh wordpress_test root root lo último
Paso 4 Para probar si todo está instalado correctamente, todo lo que tiene que hacer es ejecutar el comando phapit. Se realizará un ejemplo de archivo de prueba test-sample.php que se creó anteriormente. > $ Phuned
Escribiendo pruebas unitarias para WordPress Si mira Test-Sample.php incluida en las pruebas, notará que la clase SampleTest se extiende WP_UNITTESTCASE y no phpunit_framework_testcase. Esto se debe a que WordPress se entrega con su propia biblioteca de prueba que ofrece funcionalidades específicas de WordPress y se basa en PhPunit_Framework_TestCase. Con WP_UNITTESTCASE, cada método que se inicia con la prueba se ejecutará automáticamente. Cuando rodé el pH hacia arriba, test_sample () se ejecutó porque estaba prefijado con el test_ y declaré que la verdadera es verdadera.
Así es como podemos usar wp_unittestcase para nuestras propias pruebas: wp_unittestcase nos ofrece objetos, métodos de utilidad y declaraciones específicas de WordPress, además de las declaraciones proporcionadas por declaraciones de prueba de Phunit, WordPress
Declaraciones de errores
$ This-> afirmarwperror ($ actual, $ mensaje)

$ This-> afirmarnotwperror ($ actual, $ mensaje)

$ This-> afirmarifrerror ($ actual, $ mensaje)

$ This-> ASSERTNOTIXRORROR ($ Current, $ Mensaje)

Declaraciones para probar WP_QUEY para ver etiquetas condicionales
$ This-> ASSERTQUERTRUE ($ args)
Por ejemplo, $ this-> afirmarqueTrue (‘is_single’, ‘is_feed’) significa que is_single () e is_feed () debe ser verdadero para pasar. Las fabricaciones de fábricas de objetos de WordPress facilitan la creación de publicaciones, taxonomías, usuarios, etc. Utilizo los siguientes tres métodos para crear objetos:
Create () -Returs la identificación del objeto creado
Create_and_get (): crea y devuelve todo el objeto
Create_many ($ count): crea más publicaciones basadas en $ count
Para crear un usuario y obtener la ID de usuario, simplemente podemos hacer $ user_id = $ this-> factory-> user-> creat (); O para crear un usuario con un cierto rol WordPress $ user_id = $ this-> fábrica-> user-> creado (array (‘rol’ => ‘autor’)); Otros tipos de fábrica incluyen publicación, archivo adjunto, comentarios, usuario, término, categoría, etiqueta, blog, red. Ejemplos de uso de fábricas Cargue el esencial NuanceSignstudio/EB99222AEEEEE33BE15485D5BD46
Puede encontrar más detalles sobre cada fábrica en WordPress Trac Configuración () Setup () y TearDown () WP_UNITTESTCase también proporciona sus propios métodos Configuración () y TATAWDOW (), que se pueden usar con Phapit a Setup () y Teardown () . Con el desmontaje, WP_UNITTESTCASE restablecerá el estado de WordPress que podría haber cambiado mediante un método de prueba. Y la configuración manejará la eliminación de cachés y restablecerá las variables globales. Para usarlos, simplemente llámalos con el padre :: setup () o el padre :: shatown () Por ejemplo:
Cargue el esencial NuancedenStudio/59649AD68B530003859F7FB66E735681
Las pruebas de WordPress se ejecutan en la página raíz de su sitio web. Para ejecutar pruebas en otra página, deberá entrenarlas para que lo haga. Por ejemplo, para ejecutar pruebas en la pantalla Editar edición:
Se cargan los elementos esenciales del Nucansignstudio/E04A9D03F02B11D6DB1CF4EAABDB9B3F.
Si desea probar navegando por una URL en particular, puede usar $ this-> go_to ($ url) y luego probar con afirgeQueryTrue por ejemplo:
Se cargan los elementos esenciales del Nucansignstudio/556925A3419E375E256162B9745F468.
Probar nuestro complemento (¡finalmente!) Usemos esta información y escribamos algunas pruebas para nuestro complemento de demostración. Aquí está el enlace a Phunit-Demo-Plugin, que agrega un elemento de usuario adicional cuando se crea un nuevo usuario de tipo “editor”. También muestra el meta del usuario en las pantallas de perfil para que los administradores y el usuario los modifiquen. Comience eliminando test-smple.php del directorio de prueba y creando una nueva prueba phuns-demo-plin.php. Nota: Escribiré mis pruebas en NetBeans en mi anfitrión y las ejecutaré con PH Pupited en el Tribunal VVV. Todos los cambios se sincronizarán automáticamente entre los dos sistemas. De esta manera, puedo aprovechar la finalización automática, la referencia del código y la solución de problemas usando XDebug con NetBeans. Ahora escribimos algunas pruebas para nuestro complemento. Aquí creamos un usuario con un rol de “autor” y verificamos que no se haya creado la clave meta.
Cargue el esencial NuancedenStudio/B5300D8E4CB6FA3DDC8B84B8C39D2D6
Cuando ejecuta la prueba usando phpunit (uso phunit – -debug para una salida detallada) debe pasar:
Ahora, creemos una prueba fallida creando un usuario con un “editor” y luego comparando el Metavalo del usuario para preferencias_browser con una cadena vacía.
Al ejecutar la prueba PhPunit, la prueba falla.
Nota: Cuando falla una declaración, no se realizan otras pruebas. Puede cambiar este comportamiento en phpunit.xml. Para remediar esto, podemos probar que el meta valor no estaba vacío o hacemos una comparación de cadenas para “Chrome”. También dividiremos las pruebas en dos funciones: para probar a los usuarios con y sin el papel de “editor”. Por lo tanto, al separar las declaraciones, tenemos un buen modelo para encontrar errores tal como aparecen. Los elementos esenciales se cargan al Nucansignstudio/16910386A3D9F2C37051CC5B6B6B679899
La llamada inversa o su prioridad se prueba en nuestro complemento, agregamos una devolución de llamada para el gancho de acción user_register con un valor de prioridad diferente del valor predeterminado 10. Aquí, podemos usar la función HAS_ACTION, que devuelve la prioridad de devolución de llamada en un gancho especificado. Una prueba fallida porque la prioridad debe ser mayor que 10
Crossing de prueba con una verificación de prioridad mayor de 10

Enviar el formulario de prueba para probar si el campo prefered_browser se actualiza correctamente desde el perfil de usuario, necesitaremos fingir la variable de publicación y luego llamar al método que actualiza el meta usuario. Esta es una prueba aislada. Solo estamos preocupados por la función de nuestro meta de actualización de complementos, y no por el resto del sistema, como si el formulario de perfil se ha enviado correctamente o no. Una prueba fallida después de actualizar el meta valor
Una prueba de pasaje comparando que prefered_browser se ha actualizado en la ópera
Aquí está el código completo para las pruebas en esta publicación:

Se cargan los elementos esenciales del Nucansignstudio/4A8Bee5D4F1DFD2B78D3F6976E2C29B.

Los ejemplos del mundo real de las pruebas unitarias en WordPress son algunas pruebas que escribí para una utilidad de complemento de administración simple que utiliza la construcción orientada a objetos.Nota: Para aprovechar los Phpunit TestDoubles en un complemento sin clase, deberá usar el nombre y los espacios PHP 5.3 o más recientes.Para algunos ejemplos de pruebas avanzadas, consulte: Pruebas de núcleo de WordPress

Pruebas unitarias de WooCommerce
Pruebas para solicitudes de AJAX

El marco de burla de la API de WordPress


Probar un tema de WordPress Una forma simple de probar un tema de WordPress es usar datos de prueba unitarios temáticos. Tenemos un gran artículo que explica cómo configurarlo. Si su tema ofrece una funcionalidad múltiple o desea usar Phupit, puede echar un vistazo a la base básica de Tom McFarlin. La forma en que lo configura dependerá de la estructura de su tema de desarrollo en función de las pruebas (TDD) TDD es un paradigma de diseño de software en el que las pruebas unitarias se escriben primero, y luego el código está escrito para pasar las pruebas. La idea es escribir pruebas unitarias que fallan y luego escribir código para pasar esas pruebas. El ciclo continúa hasta que se agregaron todas las características faltantes. Con cada iteración, el código se restaura sin cambiar el comportamiento. Ya sea que use TDD o no escriba pruebas a medida que se desarrolla es la clave aquí. Pruebas continuas de complementos unitarios. Espero que este artículo lo ayude a comenzar con las pruebas de phapprit en WordPress. También puede ver la automatización de pruebas utilizando un programa de laminación de tareas como Gulp o Primer. Finalmente, puede seguir a WordPress Trac, que lo ayudará a escribir pruebas utilizando las mejores prácticas para WordPress. Recursos aditalehttps: //make.wordpress.org/cli/2013/02/19/plogin ourts/

http://wordpress.tv/?s=unit+Test


https://carlalexander.ca/introduction-wordpression —itesting/


https://jtreminio.com/2013/03/Unit test-totorial-part-5-mock-methods-and–woverriding-constructs/
¡Espero que hayas encontrado este artículo útil sobre los complementos de prueba! Si tiene alguna pregunta, sobre el código, pregunte en los comentarios a continuación.
Etiquetas: prueba de medio

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 *