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.