Я пытаюсь написать несколько тестов для приложения Express, где у меня есть модель User. Один из моих методов выглядит следующим образом:
let user = await User.findById(req.params.userId);
user.name = req.body.name || user.name;
user.password = req.body.password || user.
user = await user.save();
Код работает так, как должен, но когда я проверяю его, Джест жалуется:
TypeError: user.save is not a function
Прямо сейчас Я высмеиваю всю свою модель пользователя следующим образом:
jest.mock('../../models/User');
Я пытался смоделировать функцию сохранения следующим образом, но ничего не изменилось:
jest.spyOn(User.prototype, 'save')
.mockImplementationOnce(() => Promise.reject('fail update'))
Как Я уже говорил, код работает нормально. Я не получаю эту ошибку при запуске сервера.
Однако происходит одна странная вещь: когда я запускаю тесты, я получаю это предупреждение от mon goose
Mon goose: похоже, вы пытаетесь протестируйте приложение Mon goose в стандартной Jesdom-среде Jest. Пожалуйста, убедитесь, что вы прочитали документы Mon goose по настройке Jest для тестирования Node.js приложений: http://mongoosejs.com/docs/jest.html
Я прочитал документы и сказал, что установите testEnvironment в качестве 'узла' в файле конфигурации Jest, что я уже делаю. Это мой файл jest.config. js:
module.exports = {
testEnvironment: 'node'
};
Однако я получаю предупреждение.
Это мой тестовый скрипт: jest --watchAll
Любая помощь будет оценена. Заранее спасибо