Jest — test runner. Supertest — HTTP assertions.
1// app.js2const express = require("express");3const app = express();4app.use(express.json());5app.get("/users/:id", (req, res) => {6 res.json({ id: req.params.id, name: "John" });7});8app.post("/users", (req, res) => {9 res.status(201).json({ id: "1", ...req.body });10});11module.exports = app;1213// app.test.js14const request = require("supertest");15const app = require("./app");1617describe("Users API", () => {18 it("GET /users/:id returns user", async () => {19 const res = await request(app)20 .get("/users/123")21 .expect(200);2223 expect(res.body).toEqual({24 id: "123",25 name: "John",26 });27 });2829 it("POST /users creates user", async () => {30 const res = await request(app)31 .post("/users")32 .send({ name: "Jane" })33 .expect(201);3435 expect(res.body.name).toBe("Jane");36 });37});
Key points: