Agent-skills-standard 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. (triggers: **/*.spec.ts, test/**/*.e2e-spec.ts, Test.createTestingModule, supertest, jest, beforeEach)
install
source · Clone the upstream repo
git clone https://github.com/HoangNguyen0403/agent-skills-standard
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/HoangNguyen0403/agent-skills-standard "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/nestjs/nestjs-testing" ~/.claude/skills/hoangnguyen0403-agent-skills-standard-nestjs-testing && rm -rf "$T"
manifest:
skills/nestjs/nestjs-testing/SKILL.mdsource content
NestJS Testing
Priority: P2 (MAINTENANCE)
Structure
src/**/*.spec.ts # Unit tests (isolated logic) test/**/*.e2e-spec.ts # E2E tests (full app flows)
Unit Testing
- Setup: Use
with mocked providersTest.createTestingModule() - Mocks: Mock all dependencies via
{ provide: X, useValue: mockX } - Pattern: AAA (Arrange-Act-Assert)
- Cleanup: Call
injest.clearAllMocks()afterEach
E2E Testing
- Database: Use real test DB (Docker). Never mock DB in E2E.
- Cleanup: Mandatory. Use transaction rollback or
inTRUNCATE
.afterEach - App Init: Create app in
, close inbeforeAllafterAll - Guards: Override via
.overrideGuard(X).useValue({ canActivate: () => true })
Strict TypeScript (MANDATORY)
- No
: Use typed objects,any
, orjest.Mocked<T>
. Neveras unknown as T
.as any - No
: Fix underlying type issue. No exceptions.eslint-disable - Verify DTO shapes: Read actual DTO class before writing mock data.
- Cast Jest matchers: Nested
→expect.anything()
.expect.anything() as unknown - No unused vars: Only declare variables if referenced in assertions or setup.
Anti-Patterns
- No Private Tests: Test via public methods, not
. When coverage requires it, use typed helper (see strict-typescript reference).service['privateMethod'] - No DB Mocks in E2E: Use real DB with cleanup. Mocks defeat E2E purpose.
- No Shared State: Call
injest.clearAllMocks()
. Random failures otherwise.afterEach - No Resource Leaks: Always close app and DB in
.afterAll
References
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