
Testeando una API de Express.js con Vitest
Paso 1: Configuración de Express
Iniciar el repositorio
Crea un nuevo directorio para tu proyecto y navega dentro de él:
mkdir my-express-app && cd my-express-app
Luego, inicializa un nuevo proyecto de Node.js:
npm init -y
A continuación, instala las dependencias:
npm install express vitest @vitest/ui supertest dotenv
Crear archivos de la API
Crea un nuevo archivo y agrega nuestras rutas para poder exportarlas, iniciar el servidor con esas rutas y también poder probarlas:
touch root.js
Agrega:
import express from "express"; const app = express(); app.get("/api/products", (req, res) => { res.status(200).json([ { id: 1, name: "iPhone", }, { id: 2, name: "MacBook Pro", }, ]); }); export { app };
Crea el archivo que inicializará el servidor, podemos ejecutarlo con el comando "node app.js":
touch app.js
import { app } from "./root.js"; import dotenv from "dotenv"; dotenv.config(); const port = process.env.PORT || 3000; app.listen(port, () => { console.log(`⚡ Server listening on port \x1b[33m${port}\x1b[37m`); });
Actualiza el archivo package.json para poder usar módulos ECMAScript. Tu archivo debería verse así:
{ "name": "my-express-app", "version": "1.0.0", "type": "module", "description": "", "main": "index.js", "scripts": { "test": "echo \"Error: no test specified\" && exit 1" }, "keywords": [], "author": "", "license": "ISC", "dependencies": { "@vitest/ui": "^1.4.0", "dotenv": "^16.4.5", "express": "^4.19.1", "supertest": "^6.3.4", "vitest": "^1.4.0" } }
Ahora puedes probar tu API usando el siguiente comando!
node app.js
Paso 2: Configuración de Vitest
Crear archivos de prueba
Crea el archivo que será leído por vitest y escribe la prueba:
touch index.test.js
Agrega:
import { test, beforeEach, afterEach } from "vitest"; import { app } from "./root.js"; import request from "supertest"; let server; beforeEach(() => { server = app.listen(); }); afterEach(() => { server.close(); }); test("GET /api/products", async ({ expect }) => { const response = await request(server).get("/api/products"); expect(response.statusCode).toBe(200); server.close(); });
Paso 3: ¡Prueba tu API!
Para ejecutar las pruebas, simplemente ejecuta el siguiente comando:
npx vitest
¡Lo lograste!
Puedes hacer este proceso más fácil modificando los scripts de package.json de la siguiente manera:
"scripts": { "test": "vitest" },