使用时如何应用全局管道Test.createTestingModule?
通常,当应用程序安装在main.ts.
beforeEach(async done => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [AppModule]
}).compile()
app = moduleFixture.createNestApplication()
await app.init()
done()
})
Run Code Online (Sandbox Code Playgroud)
Jar*_*rod 17
以下是我为确保main.ts文件中的全局管道始终与我的测试设置同步所做的操作...
首先创建一个名为 的新文件main.config.ts,其中应包含您的全局管道、过滤器等:
import { INestApplication, ValidationPipe } from "@nestjs/common";
export function mainConfig(app: INestApplication) {
app.enableCors();
app.useGlobalPipes(new ValidationPipe());
}
Run Code Online (Sandbox Code Playgroud)
mainConfig接下来,在 和main.ts(app.e2e-spec.ts或在您设置测试的任何地方)中使用新创建的函数:
main.ts
import { NestFactory } from "@nestjs/core";
import { mainConfig } from "main.config";
import { AppModule } from "./app.module";
async function bootstrap() {
const app = await NestFactory.create(AppModule);
// use here
mainConfig(app);
await app.listen(3000);
}
bootstrap();
Run Code Online (Sandbox Code Playgroud)
app.e2e-spec.ts
import { INestApplication } from "@nestjs/common";
import { TestingModule, Test } from "@nestjs/testing";
import { AppModule } from "app.module";
import { mainConfig } from "main.config";
let app: INestApplication;
beforeEach(async () => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [AppModule],
}).compile();
app = moduleFixture.createNestApplication();
// use here
mainConfig(app);
await app.init();
});
Run Code Online (Sandbox Code Playgroud)
现在,如果您需要添加一个新管道,您只需在一个位置 ( main.config.ts) 进行更改即可看到它反映在应用程序和测试中。
您可以在初始化测试模块之前添加它们:
beforeEach(async done => {
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [AppModule]
}).compile()
app = moduleFixture.createNestApplication()
// Add global pipe here
app.useGlobalPipes(new ValidationPipe({ transform: true, whitelist: true, forbidNonWhitelisted: true }))
await app.init()
done()
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
606 次 |
| 最近记录: |