intermediate
NestJS testing module
Стройте focused unit, integration и e2e tests через TestingModule, provider overrides, module fixtures и HTTP adapters.
`@nestjs/testing` собирает изолированные срезы через `Test.createTestingModule()`. Override providers для mocks, compile module, получение services или HTTP adapters для assertions.
const moduleRef = await Test.createTestingModule({
controllers: [UsersController],
providers: [
UsersService,
{ provide: UsersRepository, useValue: mockRepo },
],
}).compile();
const controller = moduleRef.get(UsersController);
const service = moduleRef.get(UsersService);
E2E — `INestApplication` с `supertest` на `app.getHttpServer()`. Unit tests на services с mocked dependencies; integration — feature modules с test doubles для IO.
На интервью: `overrideProvider` vs manual mocks, изолированное тестирование guards и pipes, без полного `AppModule` в каждом тесте.
Типовые ошибки: compile всего app на тест (медленно), нет `app.close()`, реальные external services в тестах.
Компромисс — между простотой, производительностью, безопасностью и эксплуатацией: назовите, что оптимизировали и какую цену приняли.
Чеклист:
- Минимальный TestingModule на scope теста.
- Override external IO на границах providers.
- Закрывать Nest application после e2e.
- Controllers с mocked services, не real DB.