所以我已经为我的后端编写了大量的端到端测试,这变得势不可挡,因为所有的测试方法都在一个文件中。
我把它们都放在一个文件中的原因是,当我的应用程序创建时,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,
};
(sqlite
与mysql
基本兼容)
这将使您的数据在测试之间持久化。