NestJS Совместное использование сервера e2e между тестовыми наборами - PullRequest
0 голосов
/ 23 октября 2019

Я использую тестовый модуль NestJS для насмешки над приложением nest и хочу поделиться этим приложением среди различных тестовых наборов.
Вот мои настройки:

test
  |_ helpers
    |_ testApp.ts
  |_ e2e
    |_ users.e2e-test.ts
  |_ beforeAll.e2e-test.ts

testApp.ts

import { Test } from '@nestjs/testing';
import { DatabaseModule } from '../../src/database/database.module';
import { UserModule } from '../../src/user/user.module';

let app: any;
export async function initServer() {
  const fixture = await Test.createTestingModule({
    imports: [
      DatabaseModule,
      UserModule,
    ],
  }).compile();
  app = fixture.createNestApplication();

  await app.init();
}
export default app;

beforeAll.e2e-test.ts

import { initServer } from './helpers/testApp';

before(async () => {
  await initServer();
});

users.e2e-test.ts

import * as request from 'supertest';
import * as chai from 'chai';
const expect = chai.expect;

import { UserType } from '../../src/user/enum/user-types.enm';
import app from '../helpers/testApp';

const admin = {
  email: 'admin@example.com',
  password: '123',
  type: UserType.ADMIN
};
describe.only('Creating User with customized permissions', async () => {
  it('User should be able to sign in', async () => {
    request(app.getHttpServer())
      .post('/auth/signin')
      .send({ email: admin.email, password: '123' })
      .end((_, res) => {
        expect(res.status).to.equal(200);
      });
  });
});

Поэтому я хочу разделить экземпляр NestApplication между различными наборами тестов, но я получаюapp как undefined в тестовом примере и выдает следующую ошибку:
TypeError: Cannot read property 'getHttpServer' of undefined

Есть ли способ сделать это? Или я должен инициализировать новый NestApplication в каждом наборе тестов?

Я использую mocha в качестве тестового прогона.

...