我正在使用mochajs来测试一个express API。我有一些异步函数,因为我查询一个数据库。我在这个github问题中读到,使用async / await应该可以工作。但是,测试一直在运行,我必须手动关闭进程,而不管promise是否已解决,如console.log
中所示。
令人惊讶的是,如果我只运行使用相同async / await模式的前一个测试,它就会停止。唯一的区别是,在第二个例子中,在测试的函数中有另一个await,但它也被正确地解决了。
it('Returns error when token is not correct', async () => {
let result = await addSciStudy({token: 'fake'})
console.log(result)
expect(result).to.have.key('error')
});
// { error: 'Token is not correct, please contact the administrator' }
字符串
下面是测试(第12行):https://github.com/icra/snappAPI-v2/blob/main/tests/test-add-sci-study.js
这里是测试函数:https://github.com/icra/snappAPI-v2/blob/main/lib/add-sci-study.js的
- 谢谢-谢谢
1条答案
按热度按时间iq0todco1#
我发现问题了。在测试的函数中,调用了另一个查询数据库的函数。Mochajs正在等待连接关闭以停止测试。因此,我创建了一个函数来关闭可以在测试脚本中导入的连接:
字符串
问题是,当连接关闭时,则不再打开。因此,如果其他测试查询数据库,它们就会失败。我所做的是在最后创建一个假测试,一旦所有测试都运行了,就关闭连接:
型
唯一的缺点是,当一个测试以交互方式运行时,仍然必须手动停止该测试。但是当测试以编程方式运行时,它会停止,例如,如果您想将它们集成到bash脚本中以在部署之前进行测试,这一点很重要。