首页 > 解决方案 > Jest 测试异步功能 - 测试运行完成后一秒钟 Jest 没有退出

问题描述

我想使用 node-mocks-http 用 Jest 测试我的 Next.js API 函数。这是我要测试的功能:

export default async (
  req: NextApiRequest,
  res: NextApiResponse
): Promise<void> => {
  const foods = await getFoods()
  res.json(foods)
}

这是我的测试文件的样子:

import { createMocks } from 'node-mocks-http'
import handler from './foods'

  test('api route', async (done) => {
    try{
      const { req, res } = createMocks({
        method: 'GET',
      })
      await handler(req, res)
      expect(res._getStatusCode()).toBe(200)
      done()
    } catch(err){
      done(err)
    }
  })

没有await getFoods()调用,一切都按预期工作。但是,通过调用我得到错误:Jest did not exit one second after the test run has completed.getFoods()是一个异步棱镜数据库查询。这里缺少什么?

标签: javascriptnode.jsjestjsnext.jsnode-mocks-http

解决方案


如果我将它添加到我的测试文件中,这个警告就会消失:

afterAll(async () => {
  await prisma.$disconnect()
})

推荐阅读