CursosEmpresasBlogLiveConfPrecios

Validación

Clase 20 de 24 • Curso Básico de Testing con PHP y Laravel

Clase anteriorSiguiente clase
    Fernando E. Cueto

    Fernando E. Cueto

    student•
    hace 4 años

    Es buena practica nombrar las funciones de testing con nombres mas explicitos, esto ayuda al momento de correr los tests completos a identificar mejor donde está el problema cuando hay fallas o a documentar mejor cuando todo está ok. Por ejemplo en lugar de:

    public function test_validate() { // tests }

    se podría escribir de esta forma:

    public function test_validate_name_field_has_a_value_when_create_a_new_tag() { // tests }
    Alejandro Valenzuela

    Alejandro Valenzuela

    student•
    hace 5 años

    Les dejo una forma de verificar varios campos con validaciones utilizando dataProvider: Estas son mis validaciones:

    public function rules() { return [ 'id' => 'required', 'json' => 'required', 'class_id' => 'required', 'underscore' => 'required', ]; }

    y en mi test hago esto, primero declaro una función donde va a proveer los datos y que son todas las combinaciones de las validaciones que van a fallar:

    public function request_validation_test() { return [ ['id', null], ['json', null], ['class_id', null], ['underscore', null], ]; }

    a continuación declaro mi test pero con la particularidad de @dataProvider y el nombre de la función del proveedor de datos(request_validation_test):

    /** * @dataProvider request_validation_test */ public function test_validation( string $campo, $valor ) { $clinics_classes = factory(ClinicsClasses::class) ->make([$campo => $valor]) ->toArray(); $this->post('/api/events/', $clinics_classes) ->assertStatus(Response::HTTP_FOUND) ->assertSessionHasErrors($campo); }

    Espero que haya sido claro! Saludos

      Cristian Pisco Intriago

      Cristian Pisco Intriago

      student•
      hace 4 años

      Hola, en la función que va a proveer los datos agregaría lo siguiente para cubrir mas casos de prueba

      /** * @return \string[][] */ public function request_validation_test() { return [ ['id', null], ['id', random_int(1,1000)], ['json', null], ['json', ''], ['json', '{}'], ['class_id', random_int(1,1000)], ['underscore', null], ['underscore', str_random(256)], ]; }
      Sebastian Sulbaran

      Sebastian Sulbaran

      student•
      hace 3 años

      @cristianpisco Los test unitarios tienen que ser deterministicos, es decir, que se sepa que van o a funcionar o a fallar con certeza, por lo tanto el uso de funciones random no es recomendable.

    Santiago Velásquez Serna

    Santiago Velásquez Serna

    student•
    hace 2 años
    Jorge Bou-saad

    Jorge Bou-saad

    student•
    hace 4 años

    Otra solucion muy similar es validar con FormRequest de Laravel...alli se espcifica la regla y se inyecta la dependencia como si fuera un Request.

    Por ejemplo:

    public function (FormRequestPersonalizado $request) { //CODE }

    De esta manera, tambien se escupe el mensaje de error y no tienes que escribir $request->validate([ ]). Claro...para efectos del curso que es una app muy sencilla validate esta mas que bien pero en una App real es mejor practicar usar FormRequest.

    Nixon Ivan Torres Torrealba

    Nixon Ivan Torres Torrealba

    student•
    hace 5 años

    Me ha fallado el audio a partir del minuto 2:45. Soy el único?

      Jimmy Buriticá Londoño

      Jimmy Buriticá Londoño

      student•
      hace 5 años

      Todo esta funcionando muy bien, cuando te pase de nuevo un error hay dos opciones de solución: 1- Recargar la página F5 en Chrome 2- Cambiar el servidor desde el cual puedes ver el video, abajo en los botones en donde esta un piñón.

    Brian Sánchez Izquierdo

    Brian Sánchez Izquierdo

    student•
    hace 5 años

    Hola! para ésta clase sólo hice dos cambios 🧒 y puedes verlos en detalle aquí:

    https://github.com/AbnirHencazs/tag-tdd/tree/d8787e6f835122846e3ee621c89889ee9daedb42

Escuelas

  • Desarrollo Web
  • English Academy
  • Marketing Digital
  • Inteligencia Artificial y Data Science
  • Ciberseguridad
  • Liderazgo y Habilidades Blandas
  • Diseño de Producto y UX
  • Contenido Audiovisual
  • Desarrollo Móvil
  • Diseño Gráfico y Arte Digital
  • Programación
  • Negocios
  • Blockchain y Web3
  • Recursos Humanos
  • Finanzas e Inversiones
  • Startups
  • Cloud Computing y DevOps

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads