CodeIgniter User Guide Version 1.6.1


Clase de Prueba de Unidad

La Prueba de Unidad es una aproximación al desarrollo de software en la cual las pruebas son escritas para cada función en su aplicación. Si no está familiarizado con el concepto puede hacer un pequeño googleo en el tema.

La clase de Prueba de Unidad de CodeIgniter es bastante simple, constando de una función de evaluación y dos funciones de resultado. No se intenta ser una prueba completa sino un simple mecanismo para evaluar su código para determinar si está produciendo el tipo de dato y resultado correcto.

Inicializando la Clase

Como la mayoría de las otras clases en n CodeIgniter, la clase de Prueba de Unidad es inicializada en su controlador usando la función $this->load->library:

$this->load->library('unit_test');

Una vez cargada, el objeto de Prueba de Unidad estará disponible usando: $this->unit

Corriendo Pruebas

Correr una prueba involucra suministrar una prueba y un resultado esperado a la siguiente función:

$this->unit->run( prueba, resultado esperado, 'nombre de prueba' );

Donde prueba es el resultado del código que desea probar, resultado esperado es el tipo de dato que espera, y nombre de prueba es un nombre opcional que puede darle a su prueba. Ejemplo:

$prueba = 1 + 1;

$resultado_esperado = 2;

$nombre_prueba = 'Adds one plus one';

$this->unit->run($prueba, $resultado_esperado, $nombre_prueba);

El resultado esperado que suministre puede ser o un valor literal, o un tipo de dato a comparar. Aquí hay un ejemplo literal:

$this->unit->run('Foo', 'Foo');

Aquí hay un ejemplo de tipo de dato a comparar:

$this->unit->run('Foo', 'is_string');

Nota el uso de "is_string" en el segundo parámetro? Esto le dice a la función que evalúe si su prueba está produciendo una cadena como resultado. Aquí hay una lista de tipos de comparación posibles:

Generando Reportes

Puede o mostrar los resultados después de cada prueba, o puede correr varias pruebas y generar un reporte al final. Para mostrar un reporte directamente simplemente imprima o devuelva la función run:

echo $this->unit->run($prueba, $resultado_esperado);

Para correr un reporte completo de todas las pruebas, use esto:

echo $this->unit->report();

El reporte tendrá formato en una tabla HTML para ver. Si prefiere datos crudos puede recuperar un arreglo usando:

echo $this->unit->result();

Modo estricto

Por defecto la clase de prueba de unidad evalúa coincidencias literales sin tipo. Considere este ejemplo:

$this->unit->run(1, TRUE);

La prueba está evaluando un entero, pero el resultado esperado es un buleano. PHP, sin embargo, debido a su simpleza de tipo de datos evaluará el código como TRUE usando una prueba de igualdad normal:

if (1 == TRUE) echo 'Esto evalúa como true';

Si prefiere, puede poner la clase de prueba de unidad en modo estricto, que comparará los tipos de datos así también como el valor:

if (1 === TRUE) echo 'Esto evalúa como FALSE';

Para habilitar el modo estricto use esto:

$this->unit->use_strict(TRUE);

Habilitando/Deshabilitando Pruebas de Unidad

Si quiere dejar algunas pruebas en el lugar en su código, pero no ejecutarlas excepto que lo necesite puede deshabilitar la prueba de unidad usando :

$this->unit->active(FALSE)

Creando una Plantilla

Si desea que sus resultados de prueba tengan un formato diferente del por defecto puede establecer su propia plantillas. Aquí hay una ejemplo de una plantilla simple. Note las requeridas pseudo-variables:

$cadena = '
<table border="0" cellpadding="4" cellspacing="1">
    {rows}
        <tr>
        <td>{item}</td>
        <td>{result}</td>
        </tr>
    {/rows}
</table>';

$this->unit->set_template($cadena);

Nota: Su plantilla debe ser declarada antes de correr el proceso de prueba de unidad.