Как настроить промежуточное ПО в тесте e2e в nestjs - PullRequest
0 голосов
/ 13 сентября 2018

В реальном приложении мы пишем:

export class AppModule implements NestModule {
  constructor() {}

  configure(consumer: MiddlewareConsumer) {
    consumer.apply(JwtExtractionMiddleware).forRoutes({
      path: 'graphql',
      method: RequestMethod.ALL,
    });
  }
}

В тесте e2e я делаю что-то вроде этого:

const module = await Test.createTestingModule({
  imports: [ GraphQLModule.forRoot(e2eGqlConfig) ],
  providers: [ PubUserResolver ],
}).compile();
app = await module.createNestApplication().init();

Итак, как мне определить промежуточное ПО в тесте e2e?

1 Ответ

0 голосов
/ 18 ноября 2018

Может быть, попытаться создать определенный класс TestModule только для e2e и предоставить его createTestingModule?

@Module({
  imports: [ GraphQLModule.forRoot(e2eGqlConfig) ],
  providers: [ PubUserResolver ],
})
export class TestModule implements NestModule {
  constructor() {}

  configure(consumer: MiddlewareConsumer) {
    consumer.apply(JwtExtractionMiddleware).forRoutes({
      path: 'graphql',
      method: RequestMethod.ALL,
    });
  }
}

А затем в e2e:

const module = await Test.createTestingModule({
  imports: [TestModule]
}).compile();
app = await module.createNestApplication().init();

У меня была похожая проблема, мне нужно было подключить глобальное промежуточное ПО. В интернете также нет информации об этом, но я случайно нашел решение. Может быть, кто-то будет искать его, вот оно:

Чтобы использовать глобальное промежуточное ПО в e2e в NestJS:

Сначала создайте приложение, но не инициируйте его. Только компиляция:

const app = Test
  .createTestingModule({ imports: [AppModule] })
  .compile()
  .createNestApplication();

После этого вы можете добавить все свои глобальные промежуточные программы:

app.enableCors();
app.use(json());
app.use(formDataMiddleware(config));

Теперь запустите приложение и все:

await app.init();
...