No tienes acceso a esta clase

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

Curso de React Testing Library

Curso de React Testing Library

Wilmer Javier Garzon Cabezas

Wilmer Javier Garzon Cabezas

Testing de Componentes Condicionales con data-testid

11/20
Recursos

¿Cómo testear un componente exclusivo para administradores?

Testear componentes en aplicaciones web es fundamental para garantizar su funcionamiento correcto. Cuando un componente está diseñado específicamente para administradores, es necesario realizar pruebas adicionales para confirmar que solo ellos pueden acceder a sus características.

¿Qué es Order Summary y cuándo se muestra?

El componente Order Summary forma parte de Platzi Orders y tiene una función especial: aparecer únicamente para los SuperAdmins. Muestra el total de órdenes, ventas y un promedio de las ventas. Para verificar esta funcionalidad, es crucial utilizar correctamente los roles de usuario durante las pruebas.

¿Cómo se configura el test para un SuperAdmin?

Para comenzar a testar, primero es importante asegurarse de que el componente solo se renderice cuando el rol del usuario sea SuperAdmin. Aquí te mostramos cómo hacerlo paso a paso:

  1. Crea un nuevo caso de prueba: Define el caso de prueba para verificar que la sección se muestra para SuperAdmins.

    it('debería mostrar sección para superadmins', async () => {
       renderOrders({ role: 'SuperAdmin' });
    });
    
  2. Mock de órdenes: Utiliza un mock para simular las órdenes y verificar que el componente maneja correctamente la información.

    mockGetOrders.mockResolvedValue(mockOrders);
    
  3. Uso de waitFor: Emplea waitFor para manejar la espera de aserciones asíncronas.

    await waitFor(() => {
       const totalOrdersElement = screen.getByText(totalOrders);
       expect(totalOrdersElement).toBeInTheDocument();
    });
    

¿Cómo identificar elementos específicos sin ambigüedad?

A veces, una aplicación puede contener muchos elementos similares, complicando la tarea de encontrar el correcto. Aquí es donde getByTestId se convierte en una herramienta valiosa.

  • Modificar el componente: Añade un atributo data-testid al elemento HTML que deseas identificar de forma única.

    <p data-testid="total-orders">{totalOrders}</p>
    
  • Uso de getByTestId: Emplea esta función para obtener el elemento en cuestión de manera clara y precisa.

    const totalOrdersElement = screen.getByTestId('total-orders');
    expect(totalOrdersElement.textContent).toBe(String(totalOrders));
    

Recomendaciones al usar DataTestID

Aunque el data-testid es útil para identificar elementos, debes emplearlo con moderación. Aquí van algunos consejos para su uso:

  • Último recurso: Usa data-testid solo cuando otras estrategias de selección de elementos no funcionen.
  • Mantenimiento del código: Evita abusar de esta técnica para prevenir problemas de mantenimiento y legibilidad del código.

¡Anímate a practicar y mejorar tus habilidades en testing de componentes! Recuerda que dominar estas técnicas lleva tiempo, pero los beneficios en la calidad de tu software lo valen. Y no olvides dejar tus experiencias y resultados en la sección de comentarios, ¡eso nos ayuda a todos a crecer!

Aportes 3

Preguntas 0

Ordenar por:

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

Estoy muy feliz tomando este curso, la explicacion es clara y en particular me agrada que el profe repita cosas que vimos en clases anteriores, eso me ayuda a reforzar y recordar en un nuevo contexto lo visto anteriormente, muchas gracias
Hacer el expect de esta forma me parece un poco mas clean: `expect(totalOrdersElements).length(totalOrders)`
![](https://static.platzi.com/media/user_upload/image-51e589a8-4a7f-4dd8-aa74-25acf70b7800.jpg)