1. Symfony
Parte 16
Más Consultas SQL– Migración – Comenzando
Pruebas Unitarias y Funcionales
Rodrigo Miranda
rmiranda@poodu.cl
contacto@rodrigomiranda.cl
http://www.rodrigomiranda.cl
2. Criterion
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
3. Criterion:
Para realizar consultas SQL que consideren
comparaciones OR debemos utilizar el método
getNewCriterion. Con este método podemos
indicarle a Criteria cuales son los elementos o los
extremos que se incluirán en una comparación de
este tipo.
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
4. $sql = “Select * from capacitaciones where
capacitaciones.region = $region and capacitaciones.estado = ‘A’
and (capacitaciones.fecha_desde like ‘%08%’ or
capacitaciones.fecha_hasta like ‘%08%’)”;
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
5. $sql = “SELECT * FROM periodo_postulacion WHERE
(periodo_postulacion.FECHA_DESDE LIKE ‘%2009%’ OR
periodo_postulacion.FECHA_HASTA LIKE ‘%2009%’) ORDER BY
periodo_postulacion.ID DESC LIMIT 50”;
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
6. $sql = “SELECT * FROM periodo_postulacion WHERE
(periodo_postulacion.ID <> $idPeriodo AND
periodo_postulacion.FECHA_DESDE <= $fechaHasta AND
periodo_postulacion.ESTADO = ‘A’) LIMIT 1”;
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
7. $sql = “SELECT * FROM fichas_postulacion WHERE
((fichas_postulacion.NOMBRE LIKE ‘%rigoberto%’ OR
fichas_postulacion.APELLIDO_PAT LIKE ‘%rigoberto%’ ) OR
fichas_postulacion.APELLIDO_MAT LIKE ‘%rigoberto%’ ) ORDER
BY fichas_postulacion.ID DESC”;
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
8. Más Consultas
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
9. $sql = “SELECT autor.id, autor.nombre, autor.direccion,
COUNT(post.id) as totalpost FROM autor a, post p WHERE
a.NOMBRE LIKE ‘%Rodrigo%’ and p.ID_AUTOR = a.ID;
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
11. Pruebas Unitarias y Funcionales:
Se utiliza en la metodología TDD o desarrollo
basado en pruebas (del inglés test-driven
development) . Que considera la creación de las
pruebas antes del desarrollo del código de la
aplicación.
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
13. Pruebas Unitarias:
Se encargan de analizar que un único componente
de la aplicación (función o método) devuelva
resultados correcto de acuerdo a ciertas entradas.
Se encargan de un único caso cada vez, lo que
significa que un único método o función puede
necesitar varias pruebas unitarias.
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
14. Desarrollo basado en Pruebas o TDD:
1. En primer lugar se piensa en todo los casos de
funcionamiento del método.
2. Elaboración de una serie de entradas.
3. Elaboración de las salidas de acuerdo a las
entradas anteriores.
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
15. Función o Método:
Si constamos con un método que tiene como
función eliminar carácteres problemáticos, y
deseamos evaluarla a través de pruebas unitarias
deberías realizar lo siguiente.
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
16. Después de la tabla entrada y resultados:
1. Se crearían las pruebas unitarias, se ejecutarían y
todas fallarían.
2. Después se escribe el código en la aplicación para
realizar correctamente el primer caso y se vuelven
a pasar todas las pruebas, ésta vez no fallaría la
primera pero si la segunda. Así se seguiría
desarrollando el código del método completo.
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
18. Pruebas Unitarias:
Los archivos que contienen las pruebas unitarias
son php normales cuyo nombre termina en
Test.php. Se encuentran ubicados en el directorio
test/unit/ del proyecto.
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
19. Pruebas Unitarias:
Las primeras dos líneas de los archivos de prueba
Unitaria son:
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
20. Si no se cumpliera con el total de prueba
especificado en el primera parámetro de la llamada
lime_test, ejemplo:
new lime_test(16, new lime_output_color());
El aviso desplegado por el sistema sería parecido a lo
sgte:
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
21. Métodos disponibles:
Después de instanciar la clase lime_test tengo a
disposición los siguientes métodos.
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
33. Carga automá@ca de Clases:
Hemos visto hasta ahora que los script php para
pruebas unitarias incluye al comienzo llamadas a
archivos con include o require, esto se debe porque
la carga automática de clases no funciona.
Si es necesario incluir una gran cantidad de archivos
alojados dentro de un directorio, quizás desees
utilizar la clase sfSimpleAutoload en vez de
incluirlos uno por uno.
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
36. Pruebas Unitarias de las clases de Propel:
Dado que las clases Propel dependen de muchas
clases más, es necesario la carga automática de
clases, la misma que utiliza nuestro proyecto
symfony.
Además, para este tipo de pruebas es necesario una
conexión válida a la base de datos e incluir algunos
datos de prueba a ella (archivos data/fixtures)
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
37. Pasos necesarios para Pruebas Unitarias Propel:
• Obtener la carga automática, inicializando objeto de
configuración.
• Obtener la conexión a la base de datos, inicializa la
clase sfDatabaseManager.
• Cargar datos de prueba con la clase sfPropelData.
Rodrigo Miranda
Blog: www.rodrigomiranda.cl