我在使用 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 在测试运行完成后一秒没有退出。这通常意味着您的测试中存在未停止的异步操作。考虑使用
运行 Jest 来解决此问题。--detectOpenHandles
然后我尝试获取在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)
这个链接的 StackOverflow 问题有多个答案,说笑话
async
和 done
不能一起使用。
这是关于你的代码的
async (done) =>
对于您的情况,请删除
done
部分。