Pruebas de Paginación en Endpoints de Productos con Limit y Offset

Clase 22 de 25Curso de End to End Testing para APIs REST con Node.js

Resumen

¿Cómo funciona la paginación en los endpoints de productos?

La paginación es esencial para manejar grandes conjuntos de datos de manera más eficiente. En el contexto del endpoint de productos, utilizamos los parámetros de paginación limit y offset. Estos parámetros permiten obtener un subconjunto específico de productos a partir de una base de datos más grande. Así, al hacer una solicitud a este endpoint con limit=2 y offset=0, obtenemos los dos primeros productos. Al incrementar el valor de offset, accedemos a los siguientes productos en la lista. Esto es crucial para mejorar el rendimiento y la experiencia del usuario al manipular grandes volúmenes de información.

¿Cómo realizar pruebas de paginación en endpoints?

Probar la paginación es fundamental para garantizar que funciona correctamente. Al agregar las pruebas relacionadas con paginación, debemos considerar cómo se comporta el endpoint al recibir distintos parámetros. La idea es verificar que nuestra consulta devuelve una cantidad exacta de productos y que estos son los esperados en base al offset y limit utilizados. A continuación se presenta un modelo básico de cómo integrar estas pruebas.

Ejemplo de la prueba de paginación

La siguiente es una representación de una prueba para el endpoint de productos con paginación:

describe('Pruebas de paginación en el endpoint de productos', () => {
  it('Debería retornar dos productos con limit 2 y offset 0', () => {
    const limit = 2;
    const offset = 0;
    // Concatenar limit y offset en la URL
    const url = `/productos?limit=${limit}&offset=${offset}`;
    expect(url).toBe(`/productos?limit=2&offset=0`);
    // Se verifica que la respuesta tenga status 200
    // Y contenga precisamente dos productos
  });

  it('Debería retornar los siguientes dos productos con limit 2 y offset 2', () => {
    const limit = 2;
    const offset = 2;
    // Concatenar limit y offset en la URL
    const url = `/productos?limit=${limit}&offset=${offset}`;
    expect(url).toBe(`/productos?limit=2&offset=2`);
    // Se verifica nuevamente la respuesta respecto a los siguientes dos productos
  });
});

Estos fragmentos demuestran cómo se puede implementar, verificar y validar que la paginación funcione como es debido, evaluando la cantidad correcta de productos devueltos por cada consulta.

¿Qué hacer en situaciones que requieren mocking?

Normalmente, en las pruebas end-to-end evitamos usar simulación, pues la idea es probar todo el sistema en conjunto. Sin embargo, hay situaciones en las que puede ser inevitable, como cuando se interactúa con elementos externos que no forman parte de nuestra infraestructura controlada, por ejemplo, un servicio de terceros.

¿Cuándo es apropiado utilizar mocking?

  • Dependencias externas: Cuando una función o un sistema depende de un tercer servicio al que no se puede acceder siempre que se quiera.
  • Prueba de fallos: Para simular condiciones de fallo en componentes que normalmente no fallan bajo circunstancias normales de prueba.
  • Velocidad y autonomía: Para acelerar ciertos procesos que en escenarios reales tomarían demasiado tiempo o recursos.

Posicionar el uso de mocking de manera estratégica permite obtener una comprensión más completa del comportamiento del sistema bajo condiciones controladas sin perder de vista la funcionalidad y los objetivos de las pruebas end-to-end.