Testing_Jest_library
Описание
Тестирование. Библиотека Jest
Языки
- TypeScript94,7%
- JavaScript5,3%
Курс Node.js
Блок: Nest.js
Тема: Тестирование. Библиотека Jest
Домашнее задание
Задачи №1, №2, №3
Автор: Гречишников О.Н. группа: NDJS-ASINHR
Возникшие трудности:
ПРОБЛЕМЫ ПРИ ОТРАБОТКЕ МЕТОДОВ CRUD ПРИ РАБОТЕ С БД
Проблема:
Не срабатывал метод @Post('/create') create в book.controller из Postman - ошибка:
Решение:
Не верный формат данных при отправке. Нужно:
Вносить данные в
Проблема:
Не срабатывает метод @Get('/:id') getBook в book.controller из Postman - ошибка:
В Postman:
{
"statusCode": 500,
"message": "Internal server error"
}
в терминале:
ERROR [ExceptionsHandler] CastError: Cast to ObjectId failed for value "{ _id: 'id=i691f632aa939a126b1e2e630' }"
(type Object) at path "_id" for model "Book"
Решение:
- Путь в контроллере должен быть: '/:id'.
- Запрос в Postman: http://localhost:3001/book/691f632aa939a126b1e2e630
Проблема:
Не срабатывает метод @Put('/:id') update в book.controller.
{
"statusCode": 500,
"message": "Internal server error"
}
в терминале:
ERROR [ExceptionsHandler] CastError: Cast to ObjectId failed for value "i691f632aa939a126b1e2e630"
(type string) at path "_id" for model "Book"
reason: BSONError: input must be a 24 character hex string, 12 byte Uint8Array, or an integer
Решение:
Не корректный id. должен быть 691f632aa939a126b1e2e630 по факту i691f632aa939a126b1e2e63. Лишняя буковка i.
ОЧЕНЬ ЧАСТО ВСТРЕЧАЕТСЯ, У МЕНЯ!!!!! ДОБАВИТЬ В GUARD!!!!
ПРОБЛЕМЫ ПРИ ТЕСТИРОВАНИИ:
Проблема:
Nest can't resolve dependencies of the BookService (BookModel, ?). Please make sure that the argument "DatabaseConnection" at index [1]
is available in the RootTestModule context.
Показывает ошибку здесь:
Решение:
beforeEach должен выглядеть так:
Проблема:
Не проходит тест метода Put.
Решение:
Метод Mongoose findOneAndUpdate() по умолчанию возвращает оригинальный документ, тот, что был до обновления.
Нужно добавить опцию { new: true } - она заставит Mongoose вернуть обновленный документ:
Проблема:
Не проходит тест метода Delete.
Решение:
тест ожидает, что в ответе на удаление не будет объекта с заголовком “To Be Deleted”. Но Ваш сервис (как и должно быть) возвращает именно этот удаленный объект. Поэтому response.body.title равен “To Be Deleted”, и тест падает.
Тест должен выглядеть так:
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment