我最近开始在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方法编写集成测试的更有效方法是什么?