我想测试失败的 saveRecords 功能,在此之前,我必须进行身份验证并连接MongoDB。这是代码。
before(() => {
sinon.stub(Authentication, 'authenticate').returns(true);
sinon.stub(mongodb, 'connect').resolves("connected");
sinon.stub(models, 'saveRecords').throws(new Error("Error while saving record"));
});
it('Should error out if record is not inserted into the mongodb
collection', () => {
orderWebhook(req, res)
expect(res.result).to.contain("Error while saving record");
});
这是我正在测试的代码。
exports.orderWebhook = async (req, res) => {
try {
const isAuthenticated = Authentication.authenticate(req);
if (isAuthenticated) {
await mongodb.connect();
await models.saveRecords(req.body");
res.status(200).send('Saved Successfully!');
} else {
res.status(403).send('Error! Auth failed!');
}
} catch (error) {
res.status(400).send(error.message);
}
}
我假设此代码将对身份验证进行存根,然后连接MongoDB,然后尝试插入记录并引发错误。但是当我使用VSCode调试器进行调试时,它会运行两次。
在终端中运行测试时,它是失败,这可能是什么问题?
更新:我注意到问题与承诺有关。 Sinon正在解决该请求,我正在使用 await mongodb.connect(); ,但是它没有按预期工作,如果我删除了 await 并返回了 value < / strong>而不是诺言就可以了。