小编Chr*_*lov的帖子

在具有内存数据库的 NestJs 的 e2e 测试中创建多个同名连接

我有使用 mysql 配置了 TypeORM 的 NestJs 应用程序。我想进行 e2e(integration) 测试,因此我想在以这种方式配置的测试中使用内存数据库:

{
    type: 'sqlite',
    database: ':memory:',
    synchronize: true,
    dropSchema: true,
    entities: [`dist/**/*.entity{.ts,.js}`],
}

Run Code Online (Sandbox Code Playgroud)

以及测试的设置

beforeEach(async () => {
        const moduleFixture: TestingModule =
            await Test.createTestingModule({imports: [AppModule, UserModule]})
                .overrideProvider(TypeOrmConfigService).useClass(MockTypeOrmConfigService)
                .compile();

        app = await moduleFixture.createNestApplication();
        await app.init();
    });
Run Code Online (Sandbox Code Playgroud)

. 运行测试时我得到了

AlreadyHasActiveConnectionError: Cannot create a new connection named "default", because connection with such name already exist and it now has an active connection session.
    at new AlreadyHasActiveConnectionError (/Users/user/workspace/app/src/error/AlreadyHasActiveConnectionError.ts:8:9)
    at ConnectionManager.Object.<anonymous>.ConnectionManager.create (/Users/user/workspace/app/src/connection/ConnectionManager.ts:57:23)
    at Object.<anonymous> (/Users/user/workspace/app/src/index.ts:228:35)
    at step …
Run Code Online (Sandbox Code Playgroud)

testing in-memory-database typeorm nestjs

5
推荐指数
1
解决办法
1958
查看次数

标签 统计

in-memory-database ×1

nestjs ×1

testing ×1

typeorm ×1