Я создал несколько конечных точек, которые отлично работают при тестировании с использованием браузера и Postman.
Сейчас я пишу тесты для этих конечных точек (я знаю, что сначала я должен был написать эти тесты), и я продолжаю получать сообщение об ошибке-
"Необработанный отказ TypeError: res.status не является функцией"
Вот мой код конечной точки
router.get('/', (req, res) => {
Goal.getAll().then((goals) => {
res.status(200).json(goals);
});
});
Goal.getAll () - это функция, которая запрашиваетБД, чтобы получить цели.
Вот мой тестовый код.
describe('API routes', () => {
beforeEach(() => knex.migrate.rollback()
.then(() => knex.migrate.latest())
.then(() => knex.seed.run()));
afterEach(() => knex.migrate.rollback());
describe('GET /goals', () => {
it('should return all goals set', (done) => {
request(route)
.get('/')
.expect(200)
.expect((res) => {
expect(res.body[0]).toInclude({
title: 'blah blah blah',
description: 'blah blah blah',
});
})
.end(done);
});
});
});
В тесте используется тестовая БД.BeforeEach и AfterEach предназначены для того, чтобы выделить различные тесты, которые я буду выполнять.
Буду признателен, если кто-нибудь сможет помочь.Я не понимаю, почему res.status не отправляется как функция во время тестов, но когда я запускаю сервер, конечные точки работают отлично.
Я попытался удалить .status, но затем ошибка становится res.json isне функция.
Обновление: Я попытался создать новые файлы и основные маршруты, и тесты для них также не сработали.Новая ошибка, которую я получил, была «Uncaught TypeError: Невозможно прочитать свойство 'apply' of undefined"
Исправлено: Маршрут был экземпляром экспресс-маршрутизатора и был смонтирован на верхний уровеньМаршрут приложения.Поэтому вместо импорта одного маршрута в тестовом файле мне нужно было импортировать приложение верхнего уровня.Затем запросите полную конечную точку.так что в моем случае / API / целей