SlideShare una empresa de Scribd logo
1 de 41
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
Criterion





    Rodrigo Miranda
Blog: www.rodrigomiranda.cl
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
$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
$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
$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
$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
Más
Consultas





      Rodrigo Miranda
  Blog: www.rodrigomiranda.cl
$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
Pruebas
Unitarias
y

   Funcionales




         Rodrigo Miranda
     Blog: www.rodrigomiranda.cl
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
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
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
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
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
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
Framework
lime
de
pruebas





             Rodrigo Miranda
         Blog: www.rodrigomiranda.cl
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
Pruebas
Unitarias:

 Las primeras dos líneas de los archivos de prueba
 Unitaria son:




                      Rodrigo Miranda
                  Blog: www.rodrigomiranda.cl
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
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
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Ejemplo
strtolowerTest:

 Pruebas unitarias para la función strtolower().




                       Rodrigo Miranda
                   Blog: www.rodrigomiranda.cl
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Ejecución
en
línea
de
comandos

Ejecutamos nuestra prueba unitaria




                      Rodrigo Miranda
                  Blog: www.rodrigomiranda.cl
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
miFuncionalTest





       Rodrigo Miranda
   Blog: www.rodrigomiranda.cl
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Dis@ntas
formas
de
Ejecución




                   Rodrigo Miranda
               Blog: www.rodrigomiranda.cl
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
Al
comienzo
del
archivo:




                    Rodrigo Miranda
                Blog: www.rodrigomiranda.cl
Pruebas
Unitarias
de
las

   clases
de
Propel




            Rodrigo Miranda
        Blog: www.rodrigomiranda.cl
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
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
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Ejemplo
de
lo
anterior:




                    Rodrigo Miranda
                Blog: www.rodrigomiranda.cl
Rodrigo Miranda
Blog: www.rodrigomiranda.cl
Preguntas?




    Rodrigo Miranda
Blog: www.rodrigomiranda.cl

Más contenido relacionado

Similar a Symfony parte 16

Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmock
kaolong
 
Cómo diagnosticar problemas de rendimiento en entornos LAMP
Cómo diagnosticar problemas de rendimiento en entornos LAMPCómo diagnosticar problemas de rendimiento en entornos LAMP
Cómo diagnosticar problemas de rendimiento en entornos LAMP
Javier Carranza
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
Jordi Llonch
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
Jordi Llonch
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
Akamon Engineering
 
Ejercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxEjercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docx
ssuser2e6b96
 

Similar a Symfony parte 16 (20)

Symfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y MigraciónSymfony parte 15 Consultas y Migración
Symfony parte 15 Consultas y Migración
 
Tdd
TddTdd
Tdd
 
Junit y Jmock
Junit y JmockJunit y Jmock
Junit y Jmock
 
Cómo diagnosticar problemas de rendimiento en entornos LAMP
Cómo diagnosticar problemas de rendimiento en entornos LAMPCómo diagnosticar problemas de rendimiento en entornos LAMP
Cómo diagnosticar problemas de rendimiento en entornos LAMP
 
Codificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeansCodificacion de clases en java con NetBeans
Codificacion de clases en java con NetBeans
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
DeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - SpanishDeSymfonyDay 2014 - To mock or not to mock - Spanish
DeSymfonyDay 2014 - To mock or not to mock - Spanish
 
TDD: ¿Cómo escribir código testeable?
TDD: ¿Cómo escribir código testeable?TDD: ¿Cómo escribir código testeable?
TDD: ¿Cómo escribir código testeable?
 
Pruebas Automatizadas
Pruebas AutomatizadasPruebas Automatizadas
Pruebas Automatizadas
 
Ejercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docxEjercicio de automatizacion IntelliJ+reporte.docx
Ejercicio de automatizacion IntelliJ+reporte.docx
 
Tdd y clean code SG campus
Tdd y clean code SG campusTdd y clean code SG campus
Tdd y clean code SG campus
 
Symfony parte 4
Symfony parte 4Symfony parte 4
Symfony parte 4
 
Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012Taller de Simpletest - Drupal Day Valencia 2012
Taller de Simpletest - Drupal Day Valencia 2012
 
Introducción a Unit Testing y TDD
Introducción a Unit Testing y TDDIntroducción a Unit Testing y TDD
Introducción a Unit Testing y TDD
 
software testing
software testingsoftware testing
software testing
 
Presentación rc 1
Presentación rc 1Presentación rc 1
Presentación rc 1
 
Greenfoot 6
Greenfoot 6Greenfoot 6
Greenfoot 6
 
Tu primer script en Katalon - Paso a Paso
Tu primer script en Katalon - Paso a PasoTu primer script en Katalon - Paso a Paso
Tu primer script en Katalon - Paso a Paso
 
Django
DjangoDjango
Django
 

Más de Rodrigo Miranda

Más de Rodrigo Miranda (20)

Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion Hydrate
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion Hydrate
 
Symfony Consultas Sql Criterion Hydrate
Symfony Consultas Sql Criterion  HydrateSymfony Consultas Sql Criterion  Hydrate
Symfony Consultas Sql Criterion Hydrate
 
Symfony parte 13
Symfony parte 13Symfony parte 13
Symfony parte 13
 
Symfony parte 18
Symfony parte 18Symfony parte 18
Symfony parte 18
 
Symfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - PáginadorSymfony parte 14 Consultas SQL - Páginador
Symfony parte 14 Consultas SQL - Páginador
 
Symfony parte 12
Symfony parte 12Symfony parte 12
Symfony parte 12
 
Symfony parte 11 Formularios
Symfony parte 11 FormulariosSymfony parte 11 Formularios
Symfony parte 11 Formularios
 
Symfony parte 10
Symfony parte 10Symfony parte 10
Symfony parte 10
 
Symfony parte 9
Symfony parte 9Symfony parte 9
Symfony parte 9
 
Symfony parte 8
Symfony parte 8Symfony parte 8
Symfony parte 8
 
Symfony parte 7
Symfony parte 7Symfony parte 7
Symfony parte 7
 
Symfony Parte 3
Symfony Parte 3Symfony Parte 3
Symfony Parte 3
 
Symfony Parte 2
Symfony Parte 2Symfony Parte 2
Symfony Parte 2
 
Adentrándonos al Framework Symfony
Adentrándonos al  Framework SymfonyAdentrándonos al  Framework Symfony
Adentrándonos al Framework Symfony
 
Adentrándonos a PHP 5
Adentrándonos a PHP 5Adentrándonos a PHP 5
Adentrándonos a PHP 5
 
Introducción Nivelación PHP
Introducción Nivelación PHPIntroducción Nivelación PHP
Introducción Nivelación PHP
 
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje MoodleTicnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
 
Ticnet capacita en Plataforma de Aprendizaje Moodle
Ticnet capacita en Plataforma de Aprendizaje MoodleTicnet capacita en Plataforma de Aprendizaje Moodle
Ticnet capacita en Plataforma de Aprendizaje Moodle
 
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle Ticnet Capacita en la Plataforma de Aprendizaje Moodle
Ticnet Capacita en la Plataforma de Aprendizaje Moodle
 

Último

Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
AnnimoUno1
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Último (15)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptxEL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
EL CICLO PRÁCTICO DE UN MOTOR DE CUATRO TIEMPOS.pptx
 
presentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptxpresentacion de PowerPoint de la fuente de poder.pptx
presentacion de PowerPoint de la fuente de poder.pptx
 
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdfRefrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
Refrigerador_Inverter_Samsung_Curso_y_Manual_de_Servicio_Español.pdf
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
Presentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmerilPresentación de elementos de afilado con esmeril
Presentación de elementos de afilado con esmeril
 
Modulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdfModulo-Mini Cargador.................pdf
Modulo-Mini Cargador.................pdf
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptxPROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
PROYECTO FINAL. Tutorial para publicar en SlideShare.pptx
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 

Symfony parte 16