Tech TutorBangla Web Documentation
Portfolio
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • NestJS Documentation21টি অধ্যায়
প্রযুক্তি নির্বাচন
HomeHTMLCSSTailwind CSSJavaScriptTypeScriptReactNext.jsNode.jsExpressSocket.IOExpoWordPressPostgreSQLPrismaPostgresNestJSMongoDBDockerTanStackTanStack TableRTK QueryGitGitHub
  • Introduction
  • Installation
  • Modules
  • Controllers
  • Providers & DI
  • Pipes
  • Guards
  • Interceptors
  • Exception Handling
  • Middleware
  • Database
  • Authentication
  • Config & Env
  • File Upload
  • WebSockets
  • Microservices
  • Swagger
  • Testing
  • Best Practices
  • Project
  • Interview
  1. Docs
  2. NestJS
  3. NestJS Testing
NestJSAdvanced

NestJS Testing

Jest setup, unit test, controller/service test, e2e — NestJS testing বাংলায়।

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

NestJS CLI দিয়ে test files ready তৈরি হয় — Jest (unit) ও Supertest (e2e) built-in।

Unit Test — Service

users.service.spec.tstypescript
typescript
import { Test } from "@nestjs/testing";
import { UsersService } from "./users.service";

describe("UsersService", () => {
  let service: UsersService;

  beforeEach(async () => {
    const moduleRef = await Test.createTestingModule({
      providers: [UsersService],
    }).compile();

    service = moduleRef.get<UsersService>(UsersService);
  });

  it("সব users দেয়", () => {
    const users = service.findAll();
    expect(users).toHaveLength(2);
  });

  it("not found-এ exception", () => {
    expect(() => service.findOne(999)).toThrow();
  });
});

Unit Test — Controller (mock dependencies)

users.controller.spec.tstypescript
typescript
import { Test } from "@nestjs/testing";
import { UsersController } from "./users.controller";
import { UsersService } from "./users.service";

describe("UsersController", () => {
  let controller: UsersController;
  let service: { findAll: jest.Mock };

  beforeEach(async () => {
    service = {
      findAll: jest.fn().mockResolvedValue([{ id: 1, name: "রহিম" }]),
    };

    const moduleRef = await Test.createTestingModule({
      controllers: [UsersController],
      providers: [{ provide: UsersService, useValue: service }],
    }).compile();

    controller = moduleRef.get<UsersController>(UsersController);
  });

  it("findAll ডাকা হয়", async () => {
    await controller.findAll();
    expect(service.findAll).toHaveBeenCalled();
  });
});

E2E Test

test/app.e2e-spec.tstypescript
typescript
import { Test, TestingModule } from "@nestjs/testing";
import { INestApplication } from "@nestjs/common";
import * as request from "supertest";
import { AppModule } from "../src/app.module";

describe("App (e2e)", () => {
  let app: INestApplication;

  beforeAll(async () => {
    const moduleFixture: TestingModule = await Test.createTestingModule({
      imports: [AppModule],
    }).compile();

    app = moduleFixture.createNestApplication();
    await app.init();
  });

  afterAll(async () => {
    await app.close();
  });

  it("GET / → Hello", () => {
    return request(app.getHttpServer())
      .get("/")
      .expect(200)
      .expect(/Hello World/);
  });

  it("POST /users → validation fails", () => {
    return request(app.getHttpServer())
      .post("/users")
      .send({ name: "" })
      .expect(400);
  });
});
npm test             # unit tests
npm run test:e2e     # end-to-end
npm run test:cov     # coverage report
Testing Principle

Unit test-এ external dependency (DB, HTTP) mock করুন। E2E-এ পূর্ণ app-এর মধ্য দিয়ে request পাঠান। Coverage 80%+ রাখার চেষ্টা করুন।

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

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

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

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

mdanamolhasan1998@gmail.com