如何将jest e2e测试拆分为多个文件而不丢失上下文?



所以我已经为我的后端编写了大量的端到端测试,这变得势不可挡,因为所有的测试方法都在一个文件中。

我把它们都放在一个文件中的原因是,当我的应用程序创建时,TypeORM创建内存中的数据库实例,我在其上执行所有的测试-我需要相同的数据库来运行跨测试,因为我正在做跨实体测试。

这部分代码至关重要。它初始化了app(它也初始化了db):

let app: INestApplication;
beforeAll(async () => {
const moduleFixture = await Test.createTestingModule({
imports: [AppModule],
}).compile();
app = moduleFixture.createNestApplication();
await app.init();
});

是否有一种方法以某种方式转移beforeAll()的上下文,以便可以从位于其他文件中的测试访问它?

可能使app全局?

好的解决方案是不创建内存数据库,而是创建sqlite数据库并强制使用TypeORM通过使用

创建一个文件(它将是您的数据库):
export const e2eConfig: SqliteConnectionOptions = {
type: 'sqlite',
database: 'db.db',
entities: entities,
synchronize: true,
};

(sqlitemysql基本兼容)

这将使您的数据在测试之间持久化。

最新更新