Lou*_*les 5 jestjs nestjs prisma
我尝试在 NestJS/GraphQL 应用程序上使用 Jest 并使用 Prisma 作为我的 ORM 进行端到端测试。
这里发生的情况是 Prisma 与 Postgres 打开了太多连接,我尝试在每次测试后使用 prisma.$disconnect() 来解决这个问题,但它似乎不起作用......
这是我到目前为止所尝试过的。
import { PrismaService } from '../src/prisma.service';
describe('Users', () => {
let app: INestApplication;
const gql = '/graphql';
let prisma;
beforeEach(async () => {
prisma = new PrismaService();
const moduleFixture: TestingModule = await Test.createTestingModule({
imports: [AppModule],
}).compile();
app = moduleFixture.createNestApplication();
await app.init();
});
afterEach(async () => {
await prisma.$disconnect();
});
it('Query - Users', async () => {
//Using prisma to query database
});
});
Run Code Online (Sandbox Code Playgroud)
我的 Prisma 服务(我从 NestJS 文档Text获取它):
import { INestApplication, Injectable, OnModuleInit } from '@nestjs/common';
import { PrismaClient } from '@prisma/client';
@Injectable()
export class PrismaService extends PrismaClient implements OnModuleInit {
async onModuleInit() {
await this.$connect();
}
async enableShutdownHooks(app: INestApplication) {
this.$on('beforeExit', async () => {
await app.close();
});
}
}
Run Code Online (Sandbox Code Playgroud)
这些是我在运行所有测试(连续)后遇到的错误:
我已经浏览过 Prisma 文档,但没有找到任何有关如何使用 NestJS 和 Prisma 正确设置 Jest 环境的信息。
感谢您的帮助 !
明确指示 Prisma 仅打开与数据库的一个连接应该可以解决此问题。
您可以通过附加connection_limit=1
到连接字符串来完成此操作。
演示连接字符串:
postgresql://USER:PASSWORD@HOST:PORT/DATABASE?schema=public&connection_limit=1
Run Code Online (Sandbox Code Playgroud)
参考prisma 中的连接管理也应该有所帮助。
归档时间: |
|
查看次数: |
4765 次 |
最近记录: |