尝试访问 did() 参数时出现 Jest/Typescript 错误

问题描述 投票:0回答:1

我在使用 Typescript 和 Jest 的 Node.JS 应用程序上有以下测试用例:

/* Make sure app (and thefore its routes) are done loading before testing */

beforeAll(async () => {
  await app.ready()
})

afterAll(async () => {
  await app.close()
})

describe('User can create a new account', () => {
  it('should return a status code of 201 to indicate success', async (done) => {
    const response = await request(app.server).post('/users/create').send({
      email: '[email protected]',
      password: 'weakpassword123',
    })

    expect(response.statusCode).toBe(201)
    done()
  })
})

在此代码之前(不使用 did 参数),在 jest 成功运行测试后,我收到以下消息:

Jest 在测试运行完成后一秒没有退出。这通常意味着您的测试中存在未停止的异步操作。考虑使用

--detectOpenHandles
运行 Jest 来解决此问题。

然后我尝试获取在expect之后添加的done参数,我也尝试在afterAll方法上获取它,但无论哪种方式,我在我的IDE上收到以下错误:

Argument of type '(this: TestContext, done: DoneFn_2) => Promise<void>' is not assignable to parameter of type 'TestFn'. Type '(this: TestContext, done: DoneFn_2) => Promise<void>' is not assignable to type 'PromiseReturningTestFn'.ts(2345)

node.js typescript asynchronous jestjs supertest
1个回答
0
投票

测试函数不能同时接受“完成”回调

这个链接的 StackOverflow 问题有多个答案,说笑话

async
done
不能一起使用。

这是关于你的代码的

async (done) => 

对于您的情况,请删除

done
部分。

© www.soinside.com 2019 - 2024. All rights reserved.