49 lines
1.2 KiB
TypeScript
49 lines
1.2 KiB
TypeScript
import { Test, TestingModuleBuilder, TestingModule } from '@nestjs/testing';
|
|
import { AppModule } from '@src/app.module';
|
|
import { NestExpressApplication } from '@nestjs/platform-express';
|
|
|
|
export class TestServer {
|
|
constructor(
|
|
public readonly serverApplication: NestExpressApplication,
|
|
public readonly testingModule: TestingModule,
|
|
) {}
|
|
|
|
public static async new(
|
|
testingModuleBuilder: TestingModuleBuilder,
|
|
): Promise<TestServer> {
|
|
const testingModule: TestingModule = await testingModuleBuilder.compile();
|
|
|
|
const serverApplication: NestExpressApplication = testingModule.createNestApplication();
|
|
await serverApplication.init();
|
|
|
|
return new TestServer(serverApplication, testingModule);
|
|
}
|
|
}
|
|
|
|
export async function generateTestingApplication(): Promise<{
|
|
testServer: TestServer;
|
|
// api: ApiClient;
|
|
}> {
|
|
const testServer = await TestServer.new(
|
|
Test.createTestingModule({
|
|
imports: [AppModule],
|
|
}),
|
|
);
|
|
|
|
return {
|
|
testServer,
|
|
};
|
|
}
|
|
|
|
let testServer: TestServer;
|
|
|
|
export function getTestServer(): TestServer {
|
|
return testServer;
|
|
}
|
|
|
|
beforeAll(
|
|
async (): Promise<void> => {
|
|
({ testServer } = await generateTestingApplication());
|
|
},
|
|
);
|