No tienes acceso a esta clase

¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera

Pruebas Unitarias en PHP: Creación de Campos Virtuales

23/24
Recursos

¿Cómo integrar un nuevo campo en un proyecto PHP aplicando pruebas unitarias?

¡Bienvenidos a un mundo lleno de códigos eficientes y funcionalidades precisas! Hoy vamos a explorar una técnica esencial para cualquier programador: el uso de pruebas unitarias en nuevas funcionalidades. Cuando recibimos la solicitud de nuestros clientes de añadir una nueva columna o campo, las pruebas unitarias son nuestra mejor aliada para garantizar una implementación exitosa. Pero, ¿cómo hacerlo? Sigue leyendo para descubrir el proceso paso a paso.

¿Qué son las pruebas unitarias y por qué son importantes?

Las pruebas unitarias son pequeños bloques de código que verifican el correcto funcionamiento de unidades individuales en un programa, como funciones o métodos. Estas pruebas son cruciales porque:

  • Verifican funcionalidades específicas: Te aseguran que cada parte del código funcione como se espera.
  • Previenen errores: Identifican y previenen errores desde las etapas iniciales del desarrollo.
  • Facilitan modificaciones futuras: Si más adelante deseas actualizar o ampliar tu proyecto, las pruebas actuales te ayudarán a no dañar funcionalidades preexistentes.

¿Cómo escribir una prueba unitaria en PHP?

Al desarrollar una nueva característica, primero debemos escribir una prueba que defina su comportamiento esperado. Para ilustrar esto, veamos cómo crear un nuevo campo para mostrar el "slog" de una etiqueta.

Ejemplo de configuración de pruebas

Aquí tienes un extracto de código de cómo se escribe una prueba unitaria en PHP para un campo de slog:

public function testTagSlug() 
{
    $tag = new Tag(); // Crea una nueva instancia de la clase Tag
    $tag->name = 'proyecto PHP'; // Asigna un nombre de ejemplo

    // Verifica que el campo slog se genera correctamente
    $expectedSlug = 'proyecto-php';
    $this->assertEquals($expectedSlug, $tag->slug);
}

En este fragmento, primero configuramos un nombre dentro del objeto Tag y después utilizamos assertEquals para garantizar que el slog se genere en el formato adecuado: en minúsculas y con espacios sustituidos por guiones.

Implementación del campo virtual

Una vez que la prueba está configurada y ejecutamos las pruebas, haremos los ajustes en el código para pasar el test. Si la prueba inicial falla porque no existe el método o propiedad que esperamos, creamos nuestro atributo virtual.

public function getSlugAttribute() 
{
    return strtolower(str_replace(' ', '-', $this->name));
}

En este bloque de código, hemos definido un método getSlugAttribute que es responsable de convertir el nombre en minúsculas y reemplazar los espacios con guiones, creando así el slug deseado.

¿Cómo asegurar que todo está funcionando correctamente?

Después de implementar el código, verifiquemos que todo funciona bien volviendo a ejecutar todas nuestras pruebas. Si todas pasan, habremos confirmado que nuestra nueva funcionalidad está bien integrada y no afectó código previo.

Reflexiones finales sobre la importancia de las pruebas

Implementar pruebas unitarias es más que escribir algo de código extra. Estas pruebas son la columna vertebral que proporciona estabilidad a sus proyectos, garantizando que lo que construyas hoy siga funcionando mañana. Aprovecha el poder de las pruebas unitarias para asegurar el éxito a largo plazo.

¡A seguir aprendiendo! Recuerda que cada paso que das en mejorar tus habilidades en programación te acerca más a crear aplicaciones más robustas y fiables.

Aportes 9

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad?

Una forma más fácil de obtener el slug es utilizando el Helper de Laravel Str::slug:

use Illuminate\Support\Str;

...

public function getSlugAttribute()
{
    return Str::slug($this->name, '-');
}

3 cambios puntuales y los últimos (por el momento) del proyecto 👐

https://github.com/AbnirHencazs/tag-tdd/tree/31eac2b9ef1c149e2c4a807a07bd51b81b9d0b01

Se pierde menos tiempo realizando estos test

Caramba donde le pongo “Me encanta!” Italo es genial ya van como 7 años que aprendo con él

## 🦄✨ La aplicación finalmente quedó así. Es muy satisfactorio trabajar en el frontend estando teniendo presente que el backend ya está funcionando correctamente :D ![](https://static.platzi.com/media/user_upload/127.0.0.1_8000_-74d0d976-2c64-4dde-a8ff-59a4dfa78856.jpg)
Realmente, excelente Proyecto y excelente Curso. Me ha enseñado muy bien el como trabajar con la metodología TDD. Para practicar crear un proyecto de prueba para poner en práctica estos conocimientos.

Simplificando los accesors en Laravel 9

<?php

namespace App\Models;


use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

use Illuminate\Support\Str;

class Tag extends Model
{
    use HasFactory;

    protected $fillable = ['name'];

    public function slug(): Attribute
    {
        return new Attribute(fn() => str::slug($this->name, '-'));
    }
}

prueba unitaria