Pruebas unitarias para el desarrollo de complementos

17

Necesito aplicar pruebas unitarias para uno de mis complementos. Recientemente lo rediseñé en clases, por lo que las pruebas unitarias deberían ser más fáciles de aplicar ahora.

¿Cuáles son algunas estrategias efectivas para probar mi plugin de forma unitaria? Necesito una forma de usar las funciones de WordPress que se usan en el complemento, pero no debería necesitar un sitio de WordPress en ejecución (solo datos de prueba en el DB AFAIK), ¿verdad?

Me resulta difícil descubrir cómo probar unitariamente el complemento y no el complemento en el contexto del sitio. Podría usar Selenium para esto, pero en este momento solo quiero centrarme en la unidad de prueba de la funcionalidad de las clases de complementos, para no romperlos con cada actualización.

Fernando Briano
fuente

Respuestas:

14

Como ex ingeniero de software que construye grandes tipos de negocios que aterrizó en una agencia interactiva, permítame darle algunas ideas sobre las pruebas al desarrollar para Wordpress:

  1. Las pruebas unitarias deben probar la menor cantidad de comportamiento que una clase puede realizar. Cada clase debería poder probarse independientemente de Wordpress. Si tiene una dependencia de Wordpress, considere crear objetos y / o métodos simulados en su prueba para evitar esto. En última instancia, esto cambiará un poco la forma en que escribe su código, pero será mucho más comprobable. Como de costumbre, no hay almuerzo gratis.

  2. Cuando llegue al nivel de prueba funcional, aquí es donde puede probar su código con las dependencias de Wordpress. Aquí es donde realmente probaría que su complemento realmente realiza un servicio que se supone que debe hacer.

  3. Dependiendo de lo que haga su complemento, considere usar pruebas basadas en Selenium que prueban la presencia de datos en el DOM mediante ID. Es razonablemente robusto y es mucho menos probable que rompa versión por versión. Una vez más, el truco aquí es pensar en las pruebas como parte de su ciclo de vida de desarrollo de software. Grandes cambios en el código caerán en cascada a grandes cambios en sus pruebas. Todo es parte del costo de hacer negocios.

Si necesita ayuda con alguna de las herramientas para lograr esto, con gusto responderé si abre una nueva pregunta. Hago uso de PHPUnit y su extensión de selenio en el trabajo que hago.

Ethan Seifert
fuente
1
Hola Ethan, gracias por una respuesta tan profesional. No podría esperar menos de esta comunidad :) Trataré de escribir pruebas unitarias para mis clases y crear algunos objetos simulados para evitar las funciones de WordPress. El paso 2 es la parte más difícil para mí, ya que necesitaré tener una instancia de WordPress para algún tipo de prueba automática, donde podría comenzar a usar Selenium más tarde. Comenzaré con PHPUnit y veré cómo funciona. ¡Gracias!
Fernando Briano
¡Respuesta perfecta!
rsman
-1

Recientemente he creado un tutorial que toma la información de mi google, para mostrar cómo:

  1. Use el núcleo de WordPress para hacer pruebas unitarias
  2. Ocultar php en desuso / advertencias enviadas por sesión
  3. Muestra cómo configurar tus opciones de complementos en las pruebas
  4. Utilice las mismas pruebas unitarias de wp core para probar múltiples complementos

El tutorial está aquí , espero que ayude.

Daithí
fuente