Как исправить ошибку «Необработанный отказ TypeError: res.status не является функцией»? - PullRequest
0 голосов
/ 16 мая 2018

Я создал несколько конечных точек, которые отлично работают при тестировании с использованием браузера и 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 / целей

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