gpt4 book ai didi

testing - nestjs中e2e测试如何配置中间件

转载 作者:行者123 更新时间:2023-11-28 20:19:36 26 4
gpt4 key购买 nike

在真实的应用中,我们写:

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测试中具体的中间件怎么办呢?

最佳答案

也许尝试为 e2e 创建一个特定的 TestModule 类并将其提供给 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();

我有类似的问题,我需要附加全局中间件。互联网上也没有相关信息,但偶然我找到了解决方案。也许有人会寻找它,所以在这里:

在 NestJS 中使用端到端的全局中间件:

首先创建应用程序,但不要初始化它。只编译:

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

之后你可以添加你所有的全局中间件:

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

现在初始化应用程序,仅此而已:

await app.init();

关于testing - nestjs中e2e测试如何配置中间件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52315723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com