Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Express Documentation22টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • Installation
  • Routing
  • Middleware
  • Request & Response
  • Static Files
  • Router
  • Error Handling
  • Template Engines
  • Body Parsing
  • File Upload
  • CORS
  • Database
  • Validation
  • Authentication
  • Security
  • REST API
  • Performance
  • Testing
  • Best Practices
  • Project
  • Interview
  1. Docs
  2. Express
  3. Express Testing (Jest + Supertest)
ExpressAdvanced

Express Testing (Jest + Supertest)

Unit test, API test, jest-super, test setup — Express app testing বাংলায়।

13টি অংশবাংলা ভাষায়

Testing কোড সঠিকভাবে কাজ করছে কিনা যাচাই করা। Express-এ Jest (test runner) + Supertest (HTTP test) সবচেয়ে জনপ্রিয়।

Install

npm install --save-dev jest supertest
package.jsonjson
json
{
  "scripts": {
    "test": "jest --detectOpenHandles"
  },
  "jest": {
    "testEnvironment": "node",
    "testMatch": ["**/__tests__/**/*.test.js"]
  }
}

Separate App Export

app.jsjavascript
javascript
const express = require("express");
const app = express();

app.use(express.json());
app.use("/api/users", require("./routes/users"));

module.exports = app; // listen এখানে নেই!
server.jsjavascript
javascript
const app = require("./app");
const connectDB = require("./config/db");

connectDB();
app.listen(process.env.PORT || 5000);

API Test

__tests__/users.test.jsjavascript
javascript
const request = require("supertest");
const app = require("../app");

describe("Users API", () => {
  test("GET /api/users → 200 ও array", async () => {
    const res = await request(app).get("/api/users");
    expect(res.statusCode).toBe(200);
    expect(Array.isArray(res.body)).toBe(true);
  });

  test("POST /api/users → validation error", async () => {
    const res = await request(app)
      .post("/api/users")
      .send({ name: "" }); // invalid

    expect(res.statusCode).toBe(400);
  });

  test("POST /api/users → 201", async () => {
    const res = await request(app)
      .post("/api/users")
      .send({ name: "রহিম", email: "r@test.com" });

    expect(res.statusCode).toBe(201);
    expect(res.body).toHaveProperty("_id");
  });
});

Unit Test (Middleware)

test auth middlewarejavascript
javascript
const { protect } = require("../middleware/auth");

describe("Auth middleware", () => {
  test("token না থাকলে 401", () => {
    const req = { headers: {} };
    const res = { status: jest.fn().mockReturnThis(), 
                  json: jest.fn() };
    const next = jest.fn();

    protect(req, res, next);

    expect(res.status).toHaveBeenCalledWith(401);
    expect(next).not.toHaveBeenCalled();
  });
});
npm test

# ✓ should pass — PASS/FAIL summary দেখাবে
Testing Types

Unit test (এক ফাংশন), Integration test (API), E2E (full flow)। Express-এর জন্য Jest+Supertest যথেষ্ট শুরুতে।

শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।
আগেরExpress Performance OptimizationপরেরExpress Best Practices
এই পেজে
Tech Tutor

বাংলায় ওয়েব ডেভেলপমেন্ট ডকুমেন্টেশন শিখুন — ধাপে ধাপে।

Homeসব ডকুমেন্টেশনQuick Startআমার নোটস

© 2026 Tech Tutor. বাংলায় শিখুন, বাংলায় গড়ুন।

mdanamolhasan1998@gmail.com