Как смоделировать ошибку внутри блока try и поймать ее с помощью Jest? только для одного теста - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь проверить блок 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);
});

Как сделать здесь чистый тест и создать ошибку при попытке заблокировать только этот тест?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...