Buenas prácticas a nivel general

1

Diseño de APIs RESTful: Buenas Prácticas y Principios Básicos

2

¿Qué son los HTTP Status Codes?

3

¿Qué son los Métodos HTTP?

Creación del proyecto

4

Creación y Configuración de Estructuras de Datos en Laravel

5

Creación de Datos Falsos con Factories en Laravel

6

Consultas API con Laravel: Rutas y Controladores

7

Consultas de Datos Relacionados en Laravel

Quiz: Creación del proyecto

Planificación y mantenimiento

8

Planificación y Definición de Rutas en una API con Laravel

9

Gestión de Recursos y Colecciones en APIs Laravel

10

Configuración de Recursos Multinivel en Visual Studio Code

11

Optimización de Consultas en Laravel con Telescope

12

CRUD de Recetas con Laravel y Symfony en Visual Studio Code

13

Validación de Datos en Aplicaciones Web con Laravel

Quiz: Planificación y mantenimiento

Funciones de seguridad

14

Autenticación vs. autorización

15

Autenticación y Generación de Tokens en Laravel

16

Creación de Rutas y Controladores para Iniciar Sesión en API

17

Corrección de bugs de seguridad en aplicaciones web

18

Implementación de Políticas de Acceso en Laravel

19

Subida y Validación de Imágenes en Laravel con Visual Studio Code

20

¿Qué es la autenticación?

Quiz: Funciones de seguridad

API Testing

21

Automatización de Pruebas en Laravel con phpArtisan Test

22

Testing de Módulos Administrativos en Visual Studio Code

23

Pruebas Automatizadas para el Módulo de Recetas en PHP

24

Pruebas de Creación de Datos en Aplicaciones Web

25

Configuración y Pruebas de Actualización de Recetas en Visual Studio Code

Quiz: API Testing

API Breaking Changes

26

Versionado de API: Técnica para Gestión de Versiones y Rutas

27

Desarrollo de API con TDD: Implementación de Versión 2

Quiz: API Breaking Changes

Conclusiones

28

Desarrollo de API RESTful con Laravel: Buenas Prácticas y Seguridad

29

Desarrollo de APIs con Pruebas y Refactorización

No tienes acceso a esta clase

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

Automatización de Pruebas en Laravel con phpArtisan Test

21/30
Recursos

¿Cómo automatizar el proceso de testing en Laravel?

Cuando desarrollas código, uno de los aspectos más importantes es la capacidad para automatizar pruebas y garantizar que todas las funcionalidades sean correctas. La automatización no solo agiliza el proceso de desarrollo, sino que también sirve como documentación del sistema. En esta guía, exploraremos cómo automatizar pruebas en Laravel usando Visual Studio Code y una estructura sólida para mantener tus pruebas organizadas y efectivas.

¿Cómo iniciar el proceso de testing en Laravel?

El primer paso en el proceso de testing es comprender el flujo de trabajo habitual: desarrollamos un código, lo revisamos y verificamos los resultados. Laravel proporciona herramientas poderosas para automatizar estos pasos. Al iniciar el proceso en Visual Studio Code, podemos abrir el terminal y ejecutar phpArtisan test. Este comando nos ofrece una base inicial para nuestros tests.

php artisan test

Este comando ejecuta cualquier prueba preexistente en tu aplicación, permitiéndonos observar ejemplos y comprender la estructura que Laravel espera.

¿Cómo crear un test personalizado?

Eliminamos ejemplos predeterminados para dar paso a nuestras propias pruebas. Sigamos estos pasos para crear un test:

  1. Abre la carpeta donde almacenarás tus archivos de test.
  2. Usa el comando phpArtisan make:test CategoryTest para crear un archivo de prueba específico para las funciones de categoría.
php artisan make:test CategoryTest

Este archivo te permitirá probar diferentes métodos del controlador de categorías.

¿Cómo estructurar y ejecutar las pruebas?

Dentro de tu archivo de prueba, puedes comenzar definiendo el entorno que necesitarás para tus pruebas:

  • Base de datos de prueba: Agrupa datos que solo existan en memoria durante la ejecución del test.
  • Autenticación de usuario: Utiliza un usuario de prueba para simular inicios de sesión y autenticación.
  • Definición de rutas: Prueba distintas rutas como el acceso al índice (index) y la vista individual (show) de categorías.

Creación de datos de prueba

Para ello, crea un usuario de prueba y categorías ficticias que simulen las entradas en tu base de datos real. Usarás "factories" para generar estos datos de manera replicable.

public function setUp(): void {
    parent::setUp();

    $user = User::factory()->create();
    $this->actingAs($user);

    $categories = Category::factory()->count(2)->create();
}

Prueba de rutas

$response = $this->getJson('/api/categories');

$response->assertJsonCount(2, 'data');
$response->assertJsonStructure([
    'data' => [
        '*' => ['id', 'type', 'attributes' => ['name']]
    ]
]);

$response->assertStatus(200);

¿Cómo gestionar diferentes entornos de base de datos?

Para evitar que tu base de datos de desarrollo o producción se vea alterada durante las pruebas, es fundamental configurar una base de datos específica para el entorno de testing. Laravel permite almacenar datos temporalmente en memoria usando SQLite.

  1. Consulta el archivo de configuración phpunit.xml.
  2. Configura usando la tecnología de almacenamiento en memoria con SQLite.
<connections>
    <connection>
        <driver>sqlite</driver>
        <database>:memory:</database>
    </connection>
</connections>

Ejecutando y validando tus pruebas

Repite el ciclo de tests hasta tener pruebas exhaustivas para todas las funcionalidades. Usa el comando:

php artisan test

Cada test debería correr sin errores. Si encuentras alguna falla, revisa el código fuente y ajusta hasta que todas las pruebas sean exitosas. Esto garantiza que tus modificaciones futuras no rompan funcionalidades existentes.

Este enfoque no solo asegura la integridad de tu aplicación, sino que hace que el proceso de desarrollo sea más eficiente y confiable. Además, cada test actúa como una sección documentada del comportamiento esperado de tu sistema, facilitando posteriores consultas y modificaciones. Continúa explorando y mejorando tus habilidades en testing para perfeccionar tus proyectos en Laravel.

Aportes 4

Preguntas 0

Ordenar por:

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

⚠️ A partir del minuto 12:30 Esta configuracion es **super importante**: Eso lo debemos hacer **ANTES** de iniciar con las pruebas: `<env name="DB_CONNECTION" value="sqlite"/>` `<env name="DB_DATABASE" value=":memory:"/>`
Sobre el testing, si puedo aportar varias cosas compañeros, y ya que estamos dentro del curso buenas prácticas: **Organizar el código** de las pruebas en tres etapas, esto lo hará mucho más fácil de leer y entender: **//Arrange** 🛠 Inicializa y prepara el sistema que vas a probar, prepara el escenario, prepara las dependencias. **//Act ⚙️** Es donde se ejecuta el método o la acción que va a producir el resultado que vamos a verificar. **//Assert** ✅ Esta es la fase de verificación, donde se va a confirmar que el resultado obtenido o generado en la fase anterior sea el resultado esperado. Ah ¡ y Una cosa muy obvia pero que pasamos por alto, **usar nombres muy descriptivos** para las pruebas. Con esto en mente el código de la clase lo organizamos así: ```js public function test_category_index_page_is_displayed(): void { //Arrange 🛠 Sanctum::actingAs(User::factory()->create()); $categories = Category::factory(2)->create(); //Act ⚙️ $response = $this->getJson('/api/v1/categories'); //Assert ✅ $response->assertJsonCount(2, 'data') ->assertJsonStructure([ 'data' => [ [ 'id', 'type', 'attributes' => ['name'], ] ] ]); } ```
Me indicó Could not verify the hashed value's configuration. lo solucioné en phpunit.xml `<env name="BCRYPT_ROUNDS" value="10"/>`
Ejecutar `php artisan test` puede afectar la base de datos si no tienes configurado un entorno de pruebas adecuado. Es importante usar una base de datos separada para pruebas, de modo que los datos de producción o desarrollo no se vean comprometidos. En el transcript se menciona la configuración de una base de datos de pruebas en `phpUnit`. Asegúrate de que tus migraciones y semillas estén correctamente configuradas para que puedas restaurar los datos necesarios para tus pruebas.