Ver índice de contenidos del libro

8.6. Añadiendo pruebas para las nuevas características

El slug de una cadena de texto vacía es otra cadena de texto vacía. Si pruebas el comportamiento anterior, la prueba pasará correctamente. El problema es que no parece una buena idea añadir una cadena de texto vacía como parte de la URL. Por tanto, vamos a modificar el método slugify() para que devuelva la cadena de texto n-a (del inglés not available, "no disponible") cuando se le pase una cadena de texto vacía.

Si quieres puedes escribir primero la prueba y después actualizar el método, aunque también puedes hacer lo contrario. Hacerlo de una u otra forma es una cuestión de gusto personal, aunque escribir primero la prueba te da más confianza de que lo que programas es exactamente lo que habías planeado:

$t->is(Jobeet::slugify(''), 'n-a', '::slugify() converts the empty string to n-a');

Esta forma de programar cuya metodología consiste en escribir primero las pruebas y después desarrollar el código, se conoce con el nombre de "desarrollo basado en pruebas" o TDD por sus siglas en ingles.

Si vuelves a ejecutar las pruebas, verás que se muestra la barra de color rojo. En caso contrario, o ya has añadido esa funcionalidad al método o esta prueba no está probando lo que debería probar.

A continuación edita la clase Jobeet y añade la siguiente condición al principio del todo:

// lib/Jobeet.class.php
static public function slugify($text)
{
  if (empty($text))
  {
    return 'n-a';
  }
 
  // ...
}

La prueba ahora sí que debe pasar satisfactoriamente y se debe mostrar la barra verde, aunque sólo si te has acordado de actualizar el plan de pruebas. Si no lo has hecho, verás un mensaje de error que indica que habías planeado seis pruebas y has realizado una más. Actualizar el número de pruebas de cada archivo es muy importante, ya que permite comprobar si el script ha finalizado antes de realizar todas las pruebas.