【发布时间】:2022-07-25 16:45:25
【问题描述】:
所以我已经为我的后端编写了大量的 e2e 测试,而且由于所有的测试方法都在一个文件中,这变得不堪重负。
我将所有这些都放在一个文件中的原因是,当我的应用程序被创建时,TypeORM 会创建内存数据库实例,我在该实例上执行所有测试 - 我需要跨测试运行相同的数据库,因为我正在执行交叉-实体测试。
这部分代码至关重要。它初始化应用程序(它也在后台初始化 db):
let app: INestApplication;
beforeAll(async () => {
const moduleFixture = await Test.createTestingModule({
imports: [AppModule],
}).compile();
app = moduleFixture.createNestApplication();
await app.init();
});
有没有办法以某种方式传输beforeAll() 的上下文,以便可以从位于其他文件中的测试访问它?
也许以某种方式使app 成为全球性的?
【问题讨论】:
-
这些天我正在尝试类似的东西,但到目前为止我只设法使用 Jest 的
globalSetup和globalTeardown提取内存数据库初始化代码。请注意,不会以这种方式共享全局上下文,但至少我可以启动 MongoDB 并将其 URL 传递到临时本地文件中,因此可以在各个测试套件中使用它。您在分享实际应用程序上下文方面是否有更多运气? -
基本上我以jestjs.io/docs/27.x/mongodb和github.com/shelfio/jest-mongodb为起点,然后构建了自己的全局setup+teardown函数。
-
如果您使用的是 NodeJS 12+,请查看这个 Jest 跑步者:github.com/nicolo-ribaudo/jest-light-runner。
标签: testing jestjs nestjs e2e-testing