index.ts:
import 'reflect-metadata'
import express from 'express'
import { EntityManager, EntityRepository, MikroORM, RequestContext } from '@mikro-orm/core'
import options from '../mikro-orm.config'
import { Music } from './entities/music.entity'
import router from './routes'
const app = express()
export const DI = {} as {
orm: MikroORM,
em: EntityManager,
musicRepository: EntityRepository<Music>
}
async function bootstrap() {
DI.orm = await MikroORM.init(options)
DI.em = DI.orm.em
DI.musicRepository = DI.orm.em.getRepository(Music)
app.use(express.json())
app.use(express.urlencoded({ extended: true }))
app.use((req, res, next) => RequestContext.create(DI.orm.em, next))
app.use(router)
return { app, DI }
}
bootstrap()
export default bootstrap
music.test.ts
import request from 'supertest'
import bootstrap from '../index'
describe('musics', () => {
it('should search the musics', async () => {
const { DI, app } = await bootstrap()
request(app)
.get('/musics')
.expect(200)
.end()
await DI.orm.close()
})
}))
つまり、すべてのテストが終了した後に接続を閉じたいのですが、「it」スコープ内でのみ呼び出すことができる関数ブートストラップによって ORM 接続が返されるため、これを行うことはできません。
誰でも私がこのようなことをするのを手伝ってもらえますか?
describe('musics', () => {
afterAll(async () => {
await DI.orm.close()
})
it('should search the musics', async () => {
const { DI, app } = await bootstrap()
request(app)
.get('/musics')
.expect(200)
.end()
})
})
リポジトリは次のとおりです: https://github.com/brenomacedo/g-track/tree/master/backend