Я пытаюсь проверить блок catch (см. Ниже) В моем приложении node.js на одном из маршрутов, поэтому я пытаюсь вызвать ошибку внутри блока try, но из моего тестового файла:
router.post('/', [auth, validate(validateRental)], async (req, res) => {
const customer = await Customer.findById(req.body.customerId);
if (!customer) return res.status(400).send('Invalid customer.');
const movie = await Movie.findById(req.body.movieId);
if (!movie) return res.status(400).send('Invalid movie.');
if (movie.numberInStock === 0) return res.status(400).send('Movie not in stock.');
let rental = new Rental({
customer: {
_id: customer._id,
name: customer.name,
phone: customer.phone
},
movie: {
_id: movie._id,
title: movie.title,
dailyRentalRate: movie.dailyRentalRate
}
});
try {
await new Fawn.Task()
.save('rentals', rental)
.update('movies', { _id: movie._id }, {
$inc: { numberInStock: -1 }
})
.run();
res.send(rental);
} catch (error) {
res.status(500).send('Something Failed.');
}
});
и в моем тестовом файле, где я использую Jest, и супер-тест внутри функции postRental ():
it('should return 500 if something failed', async () => {
// want to create an error inside the try block to be catched so that res.status would be 500
const res = await postRental();
expect(res.status).toBe(500);
});
Как сделать здесь чистый тест и создать ошибку при попытке заблокировать только этот тест?