Jef*_*han 5 testing middleware e2e-testing nestjs
在实际应用中,我们这样写:
export class AppModule implements NestModule {
constructor() {}
configure(consumer: MiddlewareConsumer) {
consumer.apply(JwtExtractionMiddleware).forRoutes({
path: 'graphql',
method: RequestMethod.ALL,
});
}
}
Run Code Online (Sandbox Code Playgroud)
在 e2e 测试中,我做这样的事情:
const module = await Test.createTestingModule({
imports: [ GraphQLModule.forRoot(e2eGqlConfig) ],
providers: [ PubUserResolver ],
}).compile();
app = await module.createNestApplication().init();
Run Code Online (Sandbox Code Playgroud)
那么如何在 e2e 测试中指定中间件呢?
小智 10
也许尝试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,
});
}
}
Run Code Online (Sandbox Code Playgroud)
然后在 e2e 中:
const module = await Test.createTestingModule({
imports: [TestModule]
}).compile();
app = await module.createNestApplication().init();
Run Code Online (Sandbox Code Playgroud)
我有类似的问题,我需要附加全局中间件。互联网上也没有关于此的信息,但我偶然找到了解决方案。也许有人会寻找它,所以这里是:
要在 NestJS 的 e2e 中使用全局中间件:
首先创建应用程序,但不要初始化它。只编译:
const app = Test
.createTestingModule({ imports: [AppModule] })
.compile()
.createNestApplication();
Run Code Online (Sandbox Code Playgroud)
之后,您可以添加所有全局中间件:
app.enableCors();
app.use(json());
app.use(formDataMiddleware(config));
Run Code Online (Sandbox Code Playgroud)
现在初始化应用程序,就是这样:
await app.init();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2446 次 |
| 最近记录: |