Soláthraíonn NestJS uirlis tástála ionsuite (@nestjs/testing) comhtháite le Jest, agus déanann an ailtireacht injectionáil spleáchais go háirithe soiléir do thástáil — cruthraíonn tú modúl tástála agus insteallann tú imreortha ar spleáchais. Tagann tástálacha faoi dhó: tástálacha aonaid (eisolaithe) agus tástálacha e2e (feidhmchlár iomlán).
Tástáil aonaid ar seirbhís (le spleáchais imreortha)
import { Test } from "@nestjs/testing";
describe("UsersService", () => {
let service: UsersService;
let mockRepo = { find: jest.fn(), save: jest.fn() };
beforeEach(async () => {
const module = await Test.createTestingModule({
providers: [
UsersService,
// inject a MOCK for the repository — no real database needed
{ provide: getRepositoryToken(User), useValue: mockRepo },
],
}).compile();
service = module.get<UsersService>(UsersService);
});
it("returns all users", async () => {
mockRepo.find.mockResolvedValue([{ id: 1, name: "Ann" }]);
const result = await service.findAll();
expect(result).toHaveLength(1);
expect(mockRepo.find).toHaveBeenCalled();
});
});
An príomhbhuntáiste: ligeann DI NestJS duit spleáchais bheo a bhaint agus imreortha a chur ina n-ionad trí sholáthraitheoirí an mhodúil tástála — agus mar sin déanann tú tástáil ar an tseirbhís ar leithligh, gan bunachar sonraí fíor ná seirbhísí seachtracha.
Spleáchais imreortha a imirt go héasca
// provide a fake for ANY dependency by its token
{ provide: EmailService, useValue: { send: jest.fn() } }
{ provide: ConfigService, useValue: { get: () => "test-value" } }
Toisc nach ndéanann ranganna a bhfuil spleáchais acu a thógáil (déanann DI sin), is trialach an imirt imreortha a chur in ionad iad — bunús tástálacha glan aonaid.
Tástáil dheireadh go deireadh (e2e) — an feidhmchlár iomlán ar HTTP
import * as request from "supertest";
describe("Users (e2e)", () => {
let app: INestApplication;
beforeAll(async () => {
const module = await Test.createTestingModule({
imports: [AppModule], // the whole app
}).compile();
app = module.createNestApplication();
await app.init();
});
it("GET /users", () => {
return request(app.getHttpServer()) // make a real HTTP request
.get("/users")
.expect(200)
.expect(res => expect(res.body).toBeInstanceOf(Array));
});
afterAll(async () => await app.close());
});
Tástálacha E2E a fhordúlachán ar an fheidhmchlár iomlán agus a dhéanann iarratais HTTP fíora (trí supertest), á dhíolún go bhfuil an sreabh iomlán (foluain → gardaí → píopaí → láimhdeoir → freagra) ag feidhmíonn le chéile.
Straitéis tástála
Unit tests → services, guards, pipes in isolation (mock dependencies) — fast, numerous
Integration → a controller + its real service together via the testing module
E2E tests → full app over HTTP (supertest) — verify real request flows, fewer
Use a TEST database (or mocks) for e2e; override providers for external services.
Cén fáth a bhfuil sé tábhachtach
Tá tástáil riachtanach d'fheidhmchláir iontaofa, agus déanann ailtireacht NestJS é an-soiléir — tá tuiscint ar conas a dhéantar tástálacha tábhachtach don chaighdéan cóid agus toisc go bhfuil an creat deartha le haghaidh inmheasúrachta.
An léargas lárnach is ea go ndéanann injectionáil spleáchais imirt imreortha a dhéanamh simpli: toisc go ndeir ranganna a gcuid spleáchais agus cuireann DI ar fáil iad, ligeann an modúl @nestjs/testing duit aon spleachas (taistíochtaí bunachar sonraí, seirbhísí seachtracha, cumrú) a bhaint agus imreortha a chur ina n-ionad de réir a thóna, agus sin a chumascsann tástálacha tapa eisolaithe aonaid ar sheirbhísí, ghardaí, agus phíopaí gan bhonneagair fíor.
Is é an inmheasúracht seo ceann de na príomhchúiseanna go bhfuil creatanna DI-bhunaithe ar nós NestJS measartha.
Ag cur leis na tástálacha aonaid, dearbhaíonn tástálacha e2e (an feidhmchlár iomlán a fhordúlachán agus iarratais HTTP fíora a dhéanamh trí supertest) go bhfuil an pipeline iarratais ar fad — foluain, gardaí, bailíochtú, láimhdeoirí — ag feidhmíonn le chéile i gceart.
Tuiscint ar na huirlisí tástála (Test.createTestingModule, sáruithe soláthraithe do imirt imreortha), conas a scríobhtar tástálacha aonaid agus e2e, agus straitéis tástála ciallmhar (go leor tástálacha tapa eisolaithe, níos lú tástálacha e2e iomlán, bunachar sonraí tástála) Is breac suntais de fhorbairt NestJS ghairmiúil a bhíonn ann.
Taispeánann sé cleachtais innealtóireachta aibí agus léiríonn sé go díreach an fáth go bhfuil NestJS a struchtúir, DI-dhríofa dheartha luachmhar, agus é ina ábhar tábhachtach do thógáil shean-léibhéal.
