OOP avanzado para WordPress para.4: Configuración con WordPress Test Suite para pruebas de integración

En mis artículos anteriores de esta serie, he demostrado cómo estructurar un complemento de WordPress usando PHP orientado a objetos. Luego me acerqué a la prueba unitaria. Las pruebas unitarias cubren cada componente, totalmente aislado de todas las demás partes del sistema. Las pruebas unitarias no deben preocuparse por cómo el objeto interactúa con cualquier adicción, incluidas la base de datos y WordPress. En cambio, una vez que tenemos pruebas unitarias, utilizamos pruebas de integración para cubrir los efectos de nuestro código en el entorno. En general, utilizamos PhPUnit para ambos tipos de pruebas. Simplemente los usamos de manera diferente. Podemos pensar en el phpunit como un conjunto de declaraciones que podemos usar para escribir pruebas, así como una prueba de corredor que podemos usar para ejecutar esas pruebas o incluso otros tipos de pruebas.
La prueba de integración con WordPress Test Suite Community Project, Varing Vagrant Vagints (VVV) ofrece un sistema para crear WordPress local usando Vagrant. En VVV se incluye un sitio diseñado para el desarrollo del núcleo de WordPress. El almacén de SVN del que Instala WordPress también administra la fuente del conjunto de pruebas. Este sitio se puede usar para ejecutar el conjunto de pruebas de WordPress con complementos. Si abre este sitio en su IDE, ya que contiene el conjunto de pruebas de WordPress, debe obtener la finalización automática adecuada para WP_UNITTESTCASE y otras pruebas en la suite de prueba.
Para obtener más recursos, abordamos la configuración de VVV en un par de artículo anterior. Mi amigo Ahmad ha abordado recientemente alternativas de desarrollo local a otro trabajo. También puede encontrar la documentación para la instalación de VVV aquí. Configuración del conjunto de pruebas de WordPress con VVV Una vez que se instala VVV, debe poder ejecutar un complemento, cuyas pruebas se han creado utilizando el comando WP CLI. Le expliqué cómo usar este comando para configurar un complemento en un artículo anterior de esta serie. En ese complemento, como el ejemplo de complemento, creé para esta serie: aquí está el comité antes de pasar al uso de Docker. Desde el director de ese complemento, abra un shell y luego cambie a Bin Dir: Cesta CD y luego ejecute el script de instalación de prueba: bash ./install-wp tests_unit_tests WordPress WordPress Localhost luego regrese al director del complemento: CD ../ luego AR Debe ejecutar las pruebas sin ningún argumento: Phnipti establece el conjunto de pruebas de WordPress con Docker Vagrant fue una solución muy popular para el desarrollo local. Si bien algunos todavía lo usan, muchos desarrolladores se mudan a Docker porque es más portátil. Docker hace que sea mucho más fácil tener el mismo servidor exactamente para el desarrollo local, las pruebas locales y las pruebas automáticas utilizando un servicio de CI/CD, como Travis.
Personalmente, cambié por completo a Docker. Es mucho más flexible y simplifica el intercambio de medios de desarrollo entre Ubuntu, Windows y Mac. Si es un usuario de Windows, asegúrese de tener Windows 10 Pro o una versión posterior y tener Hyper-V. La instalación de los elementos básicos de Docker y Docker excede el propósito de este artículo. Honestamente, no tiene que saber nada sobre Docker, además de cómo instalarlo para obtener algo sobre lo que estoy a punto de mostrarle. Esto es parte de lo que es genial en Docker. Estas son las instrucciones para instalar Docker. Intente con Gutenberg primero una de las muchas cosas que amo en el proyecto Gutenberg es que es una oportunidad para actualizar lo que usamos para hacer WordPress. Por ejemplo, ahora usamos React, Redux y otras herramientas muy fuertes para construir interfaces basadas en JavaScript. Como resultado, Gutenberg nos ofrece una referencia de primera clase sobre el uso de React, Redux u otros complementos de WordPress. Observé el desarrollo de Gutenberg, para poder desarrollar con Gutenberg, enseñarle a Gutenberg, pero también para estudiar y pedir prestado cómo se usan estas nuevas herramientas. Estoy bastante obsesionado con optimizar la forma en que hacemos todo tipo de pruebas automáticas para las formas de caldera en este momento, por lo que, por supuesto, leí cómo funciona en Gutenberg.
Entonces, antes de mostrarle cómo configurar Docker para ejecutar el conjunto de pruebas de WordPress para su complemento, consulte cómo instalar y usar el entorno de prueba de Docker Gutenberg. En los artículos anteriores de esta serie, utilicé compositor como script -unner. Gutenberg utiliza inscripciones de NPM por las mismas razones que facilitan exactamente los mismos comandos con exactamente los mismos argumentos cada vez que ejecuta una tarea común, como el código de listado o las pruebas unitarias. Gutenberg Test Suite incluye no solo pruebas de PHP, sino también pruebas unitarias de JavaScript, utilizando las pruebas de JavaScript WordPress y de extremo a extremo. Hay algunas cosas realmente grandes allí, pero estas están fuera del propósito de esta publicación. No se preocupe, luego trataré la prueba automática de JavaScript. Ciertamente, verifique cómo funciona en Gutenberg si tiene curiosidad. Cuando instale Gutenberg a través del programa de instalación de complementos de WordPress, obtenga una versión optimizada para su uso en entornos de producción. Esto tiene sentido, es lo que la mayoría de las personas necesitan para usar Gutenberg. No eres la mayoría de las personas, lo limpia y comienzas desde el final. Tomará más tiempo de esta manera. Supongo que ha instalado Git y sabe cómo usarlo. Si esta suposición fue incorrecta, le pido disculpas y le doy este artículo que escribí sobre el uso de Git y este curso sobre GIT de conocer el código. Además, mi amiga Morten mantuvo una discusión muy fuerte en la que explicó el concepto de GIT, para principiantes en el WordCamp US 2015 que recomiendo.
Abra un shell, por ejemplo, utilizando la aplicación de terminal OSX, en el director de complementos de su WordPress local. Utilizo phpstorm, así que solo aprieto el directorio de arado en la terminal y es mágico allí. Luego necesitará clonar la última versión de Gutenberg en Github. Git Clone [correo electrónico protegido]: WordPress/Gutenberg. Una vez que haya terminado, pase al nuevo director de CD Gutenberg, ahora tenemos Gutenberg, pero ninguno de los archivos de JavaScript se ha construido. Solo tenemos archivos de origen que se compilan usando webback. Webpack se instala con NPM y se ejecuta usando scripts NPM. Entonces, primero, instale adicciones npm:
Instalación de NPM Ahora tenemos todo lo que necesitamos para construir el cliente JavaScript usando NPM: NPM Ejecutar dev ahora podemos configurar el conjunto de pruebas ejecutando el script de instalación: bash ./bin/install-docker.sh debería ser. Debería poder ver el sitio web de WordPress que acaba de crear con Docker en http: // localhost: 8888/. También debe poder ejecutar pruebas unitarias con este comando: NPM ejecuta la prueba -php Puede ejecutar pruebas de la unidad de JavaScript: NPM ejecuta la unidad de prueba que conoce todo lo que necesita para contribuir a Gutenberg y escribir pruebas para demostrar que su contribución funciona como por intención. Puede obtener más información sobre la prueba de Gutenberg en: https://github.com/wordpress/gutenberg/blob/master/docs/testing-verview.md
¿Te gustaría crear el tuyo? En Gutenberg, han realizado mucho trabajo detallado para probar las versiones de PHP obsoletas y en apoyo de otros tipos de entornos locales.
Si desea un ejemplo de cómo usar Docker y PHP Modern para el desarrollo de complementos, recomiendo un ejemplo de código Chris Zarate y puede encontrar el código original en GitHub. La configuración de Docker de Gutenberg utiliza el contenedor Chriszarate/WordPress/. Deberías sentir un modelo aquí. Agregué algunas cosas de Gutenberg al código original de Chris, en mi complemento de ejemplo. Aquí está Docker-Composer.yml: Versión: “3.1” Servicios:
WordPress:
Imagen: WordPress
Puertos:

– 8888: 80
ambiente:
WordPress_DB_Password: ejemplo
Abspath:/usr/src/wordpress/
Volúmenes:
– WordPress:/var/www/html
-.:/lime/www/html/wp-account/plugins/rest-apo-search
CLI:
Imagen: WordPress: CLI
Volúmenes:
– WordPress:/var/www/html
-.:/lime/www/html/wp-account/plugins/rest-apo-search
mysql:
Imagen: MySQL: 5.7
ambiente:
Mysql_root_password: ejemplo
Mysql_database: wordpress_test
WordPress_Phpunit:
Imagen: Chriszarate/WordPress-Phunit
ambiente:
Phunpit_db_host: mysql
Volúmenes:
-.:/app
– Pruebas:/TMP
compositor:
Imagen: compositor
Volúmenes:
-.:/app
Volúmenes:
Prueba:
WordPress: una vez que tenemos nuestro archivo Docker-Compose.yml, podemos iniciar el servidor con este pedido: Docker-Compose -f Docker-Compose.yml up -d debería mostrarnos un sitio de WordPress en http: // localhost: 8888. Si funciona, podemos agregar nuestras pruebas con esto: docker-compose -f docker-compose.yml runati- rrm wordpress_phpunit /ap/bin/install-wp-stes.sh wordpress_test root ” mysql_phunit lo último verdadero ‘está esperando Un archivo en bin/install-wp tests.sh. Modifiqué el mío del estándar que tenía antes de usar el código prestado de Gutenberg. En su lugar, puedo ejecutar las pruebas con este comando: Docker-Compose Run-RM WordPress_Phpunit Phunit Nunca podría recordar todo esto. Por eso me gustan tanto los escenarios compositor. En artículos anteriores de la serie, creamos guiones compositor para otros pasos del proceso. En lugar de encapsular todos estos pasos de instalación, tomé prestada la Escritura de instalación de Docker. Ahora, agregemos las nuevas Escrituras de compositor. Cada script debe encapsular una etapa del proceso. Todo esto se refiere a WordPress, así que prefiámos con “WP-“. El primero será “WP-Install”. Llamará al nuevo script de instalación, guardado en bin/install-docker.sh, que configura WordPress, actualiza las adicciones del compositor del complemento e instala el conjunto de pruebas de la unidad de WordPress. Esto es todo lo que tenemos que hacer antes de ejecutar las pruebas: #!/Bin/bash #set la versión de WordPress
Wp_version = $ {1Time}
# Salga si falla algún pedido
establecer -e
# Incluir funciones útiles
. “$ (Dirname” $ ​​0 “) /inclusion.sh”
# Verifique que Docker esté instalado
si ! Command_Exists “Docker”; después
Echo -e $ (Error_message “Docker no parece estar instalado. Acceda al sitio web de Docker para descargarlo: $ (Action_Formed” https://ww.docker.com/communition -download “)”) “) Salir 1
ser
# Compruebe si Docker se ejecuta
si ! Información de Docker >>/dev/null 2> & 1; después
Echo -e $ (error_message “Docker no se ejecuta. Compruebe si inició la aplicación Docker y verla en la barra del sistema”).
Salir 1
ser
# Apague los contenedores existentes
Echo -e $ (status_message “detener los contenedores Docker …”)
Docker-Compose Down-Remove- Orphans >>/dev/null 2> y 1
# Descargar actualizaciones de imágenes
Echo -e $ (status_message “Descargue las actualizaciones de la imagen de Docker …”)
Docker-compose Pull-Prallel
# CONTENEDORES DE LANZAMIENTO
Echo -e $ (status_message “Iniciar los contenedores Docker …”)
Docker -compose up -d>/dev/null
Host_port = $ (Docker -Compose Port WordPress 80 | AWK -F: ‘{printf $ 2}’)
# Espere hasta que los contenedores Docker estén configurados correctamente
echo -ro $ (status_message “intente conectarse a WordPress …”)
hasta $ (curl -l http: // localhost: $ host_port -so -2> & 1 | gat -q “wordpress”); hacer
Echou -n ‘.’
dormir 5
Terminado
eco ”
# Instale WordPress
echo -e $ (status_message “WordPress …”) está instalado
Docker -Compose Run –rm -u 33 Cori Core instal –URL = localhost: $ host_port -testi = testSite –admin_user = admin -admin_password = contraseña [correo electrónico protegido]/dev/null
# Verifique las actualizaciones de WordPress solo si la imagen de WordPress no está actualizada.
Docker -Compose Run –RM -U 33 COR Core Update>/dev/null
# Si el volumen “WordPress” no fue anterior durante la abajo/up, pero la publicación ha cambiado, debemos actualizarlo.
if [“$ cure_url”! = “http: // localhost: $ host_port”]; después
Docker-Compose Run-RM CLI Opción Actualización Inicio “http: // localhost: $ host_port”>/dev/null
Docker-Compose Run-RM CLI Opción Actualización SiteUrl “http: // localhost: $ host_port”>/dev/null
ser
echo -e $ (status_message “servidor se ejecuta a:”)
echo -e $ (status_message “http: // localhost: $ host_port”)
# Instalar compositor
echo -e $ (status_message “Instalación y actualización de módulos compositor …”)
Docker-Compose Run-Instalación del compositor-RM
# Instale el andamio de prueba de funos
Echo -e $ (status_message “Instale el andamio de prueba de phpunit …”)
Docker-Compose Run — rrm wordpress_phpunit /ap/bin/install-wp-sests.sh wordpress_test Ejemplo root mysql “$ {wp_version}” falso>/dev/null
echo -e $ (status_message “pruebas de instalación completadas”)
Luego necesitamos uno para iniciar el servidor. Démosle que WP-start no necesitamos una fiesta de guiones para eso. Solo es: Docker-Complete hasta -d y luego necesitamos uno para ejecutar las pruebas, es el mismo comando que el último que mostré antes, solo encapsulamos en un script de compositor llamado WP Tests Docker-Compose Run-M WordPress_Phpunit Phappiit Ahora, Composer Scriptures.json se ve así: {
“Pruebas”: “El compositor repara && el compositor huele && pruebas unitarias del compositor && wp pruebas del compositor ‘,
“Tests unitarias”: “Phunit-testSuite = unit”,
“WP-Install”: “Bash ./bin/install-docker.sh”wp-start”: “docker-compose up -d”,
“Pruebas de WP”: “Docker-Compose Run-RM WordPress_Phpunit Phunit-Configuración Phunpit-Integration.xml.dist”,
“Phunit-V”: “Funit-Vversion”,
“Sniffs”: “Phpcs src/ && phpcs prueba/”,
“Remedies”: “Phpcbf src/&& phpcbf/” prueba,
“Lints”: “Parallel-Lint ./Src-Blame —- excluir al proveedor && Parallel-Lint ./tests — bllame —- Excluir proveedor”
} WordCamp Atelier I 2018 Si desea obtener más información sobre las pruebas unitarias, consulte el taller realizado por Thorsten Frommen, Carl Alexander y Giuseppe Mazzapica en Wordcamp Europe este año. Todos estos tres son desarrolladores de WordPress de Apex y recomendaría calurosamente este taller a cualquier persona. Espero que definitivamente pueda hacer o los videos para llegar a WordPress.tv, que debería. Más detalles sobre este taller están aquí. En el futuro en la próxima publicación de esta serie, abordaré la escritura de pruebas de integración con la prueba PHP de WordPress. Cubriré qué integración se evaluará, manteniendo las pruebas unitarias separadas, utilizando simulaciones y qué supuestos sobre WordPress y la base de datos podemos y no podemos hacer cuando escribimos estas pruebas.

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 *