在NestJS中测试DataMapper时如何防止死锁错误?

时间:2020-08-21 20:12:24

标签: nestjs typeorm typeorm-datamapper

我最近开始在NestJS项目中实现DataMapper。运行该应用程序很好,但是当我运行所有测试时,在某些测试用例上我遇到了QueryFailedError: deadlock detected错误。我认为我可能以不正确的方式设置了测试,但这是我发现可行的唯一方法。

这是我用于测试的模板(我大约有十几个):

import {createConnection, Connection} from 'typeorm'

import {createOrmConfig} from '../../../ormconfig'

import {AllergyRepository} from './allergy.repository'

describe('AllergyRepository', () => {
  let repo: AllergyRepository
  let conn: Connection

  beforeAll(async () => {
    conn = await createConnection(createOrmConfig('test', false))
    repo = conn.getCustomRepository(AllergyRepository)
  })

  afterAll(async () => {
    conn.close()
  })

  it('should be defined', async () => {
    expect(conn).toBeDefined()
    expect(repo).toBeDefined()
  })
})

这就是我实现存储库的方式。

import {EntityRepository, Repository} from 'typeorm'

import {Allergy} from './allergy.entity'

@EntityRepository(Allergy)
export class AllergyRepository extends Repository<Allergy> {

  async getById(id: number): Promise<Allergy[]> {
    const result: Allergy[] = await this.query(
      `
        SELECT *
        FROM public.allergy
        WHERE id = $1
      `,
      [id],
    )

    return result
    }
    
}

在NestJS中为TypeORM的Data Mapper方法编写集成测试的更有效方法是什么?

0 个答案:

没有答案