Вы не можете ожидать появления ошибки в конце вашего http-вызова.
Вы можете проверить код возврата для конкретного запроса, добавив ответ вместо строки выброса, как показано ниже:
app.put('/reviews/:id', (req, res) => {
var db = req.db;
Review.findById(req.params.id, 'title description', function (error, review{
if (error) {
// console.error(error);
return res.sendStatus(500);
}
review.title = req.body.title;
review.description = req.body.description;
review.save(function (error) {
if (error) {
console.log(error)
}
res.send({
success: true
})
})
})
И обновив свой тест:
it('should throw exception for incorrect id', function (done) {
let updateReview = {
title: 'Updated Title',
description: 'Updated Description'
};
chai.request(app)
.get('/reviews')
.end(function (err, res) {
chai.request(app)
.put('/reviews/12')
.send(updateReview)
.end(function (err, res) {
expect(res).to.have.status(500);
done();
});
});
});
Если вы хотите проверить, что для данной функции выдается конкретная ошибка, вам следует вызвать функцию wait в качестве параметра. Это можно сделать, например, изолировав вызов базы данных в функции.