技能创建器
skill-creator
创建、改进和评估自定义技能,把专业流程转化为可重复使用的 AI 能力。
nestjs-testing【数据与研究】Write Unit and E2E tests with Jest, mocking strategies, and database isolation in NestJS. Use when writing NestJS unit tests, E2E tests with supertest, or mock providers.
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
[BE-TEST-01] Parameterized Tests for Equivalent Cases: Prefer test.each when methods have multiple equivalent inputs or boundary permutations. Distinct scenarios may stay separate test functions. Reviewers must not demand parameterized rewrites without a behavioral gap.[BE-TEST-02] Ban on Brittle DB Mock String Matching: Do not use string-matching mocks for raw SQL queries. Test pure domain calculations directly, or use a real test DB for repository verification.[BE-TEST-03] Ban on Shallow Assertions: Never assert only expect(res).toBeDefined() without inspecting payload fields, status codes, and invariants.[BE-TEST-04] Ban on Pass-Through Interface Mocks: Repositories and service handlers must test contract compliance and error mapping. Ban 1:1 pass-through mock echoing without contract assertions.[BE-TEST-05] Bug-First Regression Lock: Every PR fixing a bug ticket or with title fix(...) must introduce a test reproducing the defect prior to the fix.src/**/*.spec.ts # Unit tests (isolated logic)
test/**/*.e2e-spec.ts # E2E tests (full app flows)
[BE-TEST-04]): Use Test.createTestingModule() with mocked providers. Ban 1:1 pass-through mock echoing.jest.clearAllMocks() in afterEach.[BE-TEST-03]): Avoid shallow assertions like expect(res).toBeDefined(). Verify payload invariants.[BE-TEST-02]): Use real test DB (Docker). Never mock DB in E2E.TRUNCATE in afterEach.beforeAll, close in afterAll..overrideGuard(X).useValue({ canActivate: () => true }).any: Use typed objects, jest.Mocked<T>, or as unknown as T. Never as any.eslint-disable: Fix underlying type issue. No exceptions.expect.anything() → expect.anything() as unknown.[BE-TEST-01] Stylistic parameterized rewrites: Do not demand test.each rewrites without a behavioral gap.[BE-TEST-02] Brittle DB mock string matching: Do not match SQL strings in mocks; use real DB.[BE-TEST-03] Shallow assertions: Ban shallow assertions like expect(res).toBeDefined().[BE-TEST-04] Pass-through mock echoing: Ban 1:1 mock echoing without contract assertions.[BE-TEST-05] Bug fix without reproduction test: Ban bug fixes without a reproduction test.jest.clearAllMocks() in afterEach. Random failures otherwise.afterAll.Setup examples, mocking patterns, E2E flows, test builders, coverage config: references/patterns.md
Strict-TypeScript patterns (Jest matchers, mock typing, DTO verification): references/strict-typescript-testing.md