Ver índice de contenidos del libro

8.3. El framework de pruebas lime

Todas las pruebas unitarias escritas para el framework lime empiezan con las mismas líneas de código:

require_once dirname(__FILE__).'/../bootstrap/unit.php';
 
$t = new lime_test(1, new lime_output_color());

La primera línea incluye el archivo unit.php, que se encarga de realizar la inicialización. Después se crea un objeto de tipo lime_test y se le pasa como argumento el número de pruebas que se quieren realizar.

Nota Indicar el número de pruebas esperadas permite que lime muestre un error en caso de que no se hayan realizado suficientes pruebas, como por ejemplo cuando una determinada prueba provoca un error fatal de PHP.

Las pruebas consisten en invocar un método o una función, pasarles una serie de argumentos y comparar su respuesta con la respuesta esperada. Esta última comparación es la que permite determinar si una prueba se ha superado o ha fallado.

Para facilitar las comparaciones, el objeto lime_test incluye varios métodos útiles:

Método Descripción
ok($condicion) Si la condición que se indica es true, la prueba tiene éxito
is($valor1, $valor2) Compara dos valores y la prueba pasa si los dos son iguales (==)
isnt($valor1, $valor2) Compara dos valores y la prueba pasa si no son iguales
like($cadena, $expresionRegular) Prueba que una cadena cumpla con el patrón de una expresión regular
unlike($cadena, $expresionRegular) Prueba que una cadena no cumpla con el patrón de una expresión regular
is_deeply($array1, $array2) Comprueba que dos arrays tengan los mismos valores

Nota Quizás te preguntas por qué motivo lime define tantos métodos si todas las pruebas se podrían escribir utilizando solamente el método ok(). Las ventajas de utilizar diferentes métodos residen en la posibilidad de mostrar mensajes de error más explícitos cuando falla la prueba y una mejora de la facilidad de lectura de las pruebas.

El objeto lime_test también incluye otros métodos útiles para pruebas:

Método Descrición
fail() Provoca que la prueba siempre falle (es útil para probar las excepciones)
pass() Provoca que la prueba siempre se pase (es útil para probar las excepciones)
skip($mensaje, $numeroPruebas) Cuenta como si fueran $numeroPruebas pruebas (es útil para las pruebas condicionales)
todo() Cuenta como si fuera una prueba (es útil para las pruebas que todavía no se han escrito)

Por último, el método comment($mensaje) muestra un comentario o mensaje pero no realiza ninguna prueba.