@Levingstoun

Почему роутер не проходит jest теста на PUT запрос, хотя данные из теста приходят на сервер?

Здравствуйте. Подскажите в чем может быть проблема.
Использую jest тестирование. Дело в том, что тесты выбрасывают 500 ошибку, хотя данные уходят в базу данных и публикуются в приложении. Вместе с серверной ошибкой вдовесок выбрасывает и такую ошибку:
Прилагаю код и логи.
Тест:
it("Route '/' POST , should post the task", async () => {
    const todo = Todo.create({
      title: "title tests",
      done: false
    });
    return request(app.use(router))
      .post("/")
      .send(todo)
      .set({ "Content-Type": "application/json" })
      .expect(500)
      .then(res => {
        console.log(res.body);
        expect(res.body).toMatchSnapshot();
      });
  });


Ошибка в логах:


console.log src/server/routes/index.js:26
TypeError: Cannot read property 'title' of undefined


Код роутера, на который он ругается:

router.post("/", async (req, res) => {
  console.log(req.body);
  try {
    const todo = await Todo.create({
      title: req.body.title, //* TypeError: Cannot read property 'title' of undefined *//
      done: false
    });
    res.status(201).json({ todo });
  } catch (error) {
    console.log(error);
    res.status(500).json({
      message: "There is an error on server"
    });
  }
});

Спасибо.
  • Вопрос задан
  • 40 просмотров
Пригласить эксперта
Ответы на вопрос 1
Robur
@Robur
Знаю больше чем это необходимо
1. поставьте await перед Todo.create.
2. что за ORM? у вас скорее всего данные "уходят" в базу потому что вы в тесте их создаете и create записывает в базу. Второй create на сервере падает и на самом деле не делает ничего
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы