use*_*794 5 typescript jestjs nestjs
我正在一个 Nestjs 项目中工作,该项目被组织成单独的模块。每个模块都有自己的 e2e 测试。在每个测试中,都会在方法中创建应用程序的实例beforeAll()。像这样
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [
AppModule,
],
}).compile();
app = moduleFixture.createNestApplication();
await app.init();
Run Code Online (Sandbox Code Playgroud)
测试结束时,app.close()称为拆除应用程序。
有没有办法可以在所有测试中使用同一个应用程序,然后在最后关闭该应用程序?为每个测试创建和拆除整个应用程序会使 e2e 测试花费很长时间。我还遇到了异步超时错误。
经过多次尝试,我发现这是不可能的,因为:
让我详细说明一下:
1. 您无法在globalSetup中设置应用程序实例,因为:
注意:任何通过globalSetup定义的全局变量只能在globalTeardown中读取。您无法检索测试套件中此处定义的全局变量。
这意味着您不能global.app在测试用例中使用一个变量。如果你不能共享global.app变量,那么你就不能使用request(app.getHttpServer()),这对于 e2e 测试至关重要。
setupFiles2. 您可以在或中设置应用程序实例setupFilesAfterEnv,但这些文件将在每个测试用例中运行。这显然是违背本意的
每个 setupFile 将在每个测试文件中运行一次。由于每个测试都在其自己的环境中运行,因此这些脚本将在执行 setupFilesAfterEnv 之前和测试代码本身之前在测试环境中执行。
该文档没有说setupFileAfterEnv将按测试文件运行。所以我尝试了,但不幸的是,它按测试文件运行。
| 归档时间: |
|
| 查看次数: |
1298 次 |
| 最近记录: |