Может быть, попытаться создать определенный класс 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();