由于额外打开的数据库连接,E2e 测试失败
E2e tests fail because of the extra opened database connection
我正在尝试为端到端测试设置环境。我设置了 e2e 数据库和模块以将固定装置加载到其中。但是在我所有的操作之后我得到了下一个错误:
AlreadyHasActiveConnectionError: Cannot create a new connection named "default", because connection with such name already exist and it now has an active connection session.
我不明白创建额外连接的地方在哪里。因为在 afterEach 钩子中我销毁了所有创建的连接。
以下是我的代码的一些链接:
堆栈:
- NestJs
- TypeOrm
- typeorm-fixtures - 生成固定装置的库
- 开玩笑
更新:
我找到了带有 typeorm 和 e2e 测试的 good example of nestjs project。可能会帮助某人。
对我来说,修复是在我当前的项目中使用 prisma。哈哈
更新 2:
我想问题在于我没有提供到我的自定义存储库的数据库连接。因此,每个回购协议都会打开自己的连接并导致错误。 prisma 也发生了同样的错误。因此,如果您使用自定义存储库,请提供数据库连接。
例如
{
provide: UserDITokens.UserRepository,
useFactory: () => new UserRepository(prisma),
},
其中 prisma
是数据库连接的单例
我遇到了这个问题。
修复
将 beforeEach
更改为 beforeAll
,将 afterEach
更改为 afterAll
。我不是 100% 确定,但我认为这是由调用 beforeEach
时新连接的注册引起的,因此即使您正在破坏 afterEach
中的连接,它仍然被注册。
我想这个问题是因为我没有提供到我的自定义存储库的数据库连接。因此,每个回购协议都会打开自己的连接并导致错误。 prisma 也发生了同样的错误。因此,如果您使用自定义存储库,请提供数据库连接。
例如
{
provide: UserDITokens.UserRepository,
useFactory: () => new UserRepository(prisma),
},
其中 prisma 是数据库连接的单例
我正在尝试为端到端测试设置环境。我设置了 e2e 数据库和模块以将固定装置加载到其中。但是在我所有的操作之后我得到了下一个错误:
AlreadyHasActiveConnectionError: Cannot create a new connection named "default", because connection with such name already exist and it now has an active connection session.
我不明白创建额外连接的地方在哪里。因为在 afterEach 钩子中我销毁了所有创建的连接。
以下是我的代码的一些链接:
堆栈:
- NestJs
- TypeOrm
- typeorm-fixtures - 生成固定装置的库
- 开玩笑
更新: 我找到了带有 typeorm 和 e2e 测试的 good example of nestjs project。可能会帮助某人。 对我来说,修复是在我当前的项目中使用 prisma。哈哈
更新 2: 我想问题在于我没有提供到我的自定义存储库的数据库连接。因此,每个回购协议都会打开自己的连接并导致错误。 prisma 也发生了同样的错误。因此,如果您使用自定义存储库,请提供数据库连接。
例如
{
provide: UserDITokens.UserRepository,
useFactory: () => new UserRepository(prisma),
},
其中 prisma
是数据库连接的单例
我遇到了这个问题。
修复
将 beforeEach
更改为 beforeAll
,将 afterEach
更改为 afterAll
。我不是 100% 确定,但我认为这是由调用 beforeEach
时新连接的注册引起的,因此即使您正在破坏 afterEach
中的连接,它仍然被注册。
我想这个问题是因为我没有提供到我的自定义存储库的数据库连接。因此,每个回购协议都会打开自己的连接并导致错误。 prisma 也发生了同样的错误。因此,如果您使用自定义存储库,请提供数据库连接。
例如
{
provide: UserDITokens.UserRepository,
useFactory: () => new UserRepository(prisma),
},
其中 prisma 是数据库连接的单例