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.