import { Test, TestingModule } from '@nestjs/testing'; import { INestApplication, Module } from '@nestjs/common'; import request from 'supertest'; import { App } from 'supertest/types'; import { AppModule } from './../src/app.module'; import { CharactersModule } from './../src/characters/characters.module'; import { DatabaseModule } from './../src/database/database.module'; import { configureApplication } from './../src/app.config'; import { TravelModule } from './../src/travel/travel.module'; @Module({}) class TestDatabaseModule {} @Module({}) class TestCharactersModule {} @Module({}) class TestTravelModule {} describe('API (e2e)', () => { let app: INestApplication; beforeEach(async () => { const moduleFixture: TestingModule = await Test.createTestingModule({ imports: [AppModule], }) .overrideModule(DatabaseModule) .useModule(TestDatabaseModule) .overrideModule(CharactersModule) .useModule(TestCharactersModule) .overrideModule(TravelModule) .useModule(TestTravelModule) .compile(); app = moduleFixture.createNestApplication(); configureApplication(app); await app.init(); }); it('/api/health (GET)', () => { return request(app.getHttpServer()) .get('/api/health') .expect(200) .expect({ status: 'ok' }); }); it('/ (GET) is not an API route', () => { return request(app.getHttpServer()).get('/').expect(404); }); afterEach(async () => { await app?.close(); }); });