Не удалось проверить мой блок catch внутри, а затем

Я новичок в коде модульного тестирования и проиграл! Я пытаюсь выдать ошибку для следующей функции, чтобы покрыть блок catch, но не добился успеха, и я не знаю, почему.

Функция:

public initialize(): Promise<this> {
    return Promise.resolve()
      .then(() => this.getQueries())
      .catch((error: Error) => {
        this.connector.localLog.error(error, 'Failed to initialize Rest Poller Launcher:');
        throw error;
      });
  }

Модульный тест:

it('should getQueries return error', () => {
  launcher.initialize()
    .then(() => {
      this.getQueries = stub().throws('TypeError');
    })
    .catch((error: Error) => {
      expect(error.message).equals('Failed to initialize Rest Poller Launcher:');
    });
});

Пожалуйста помогите

Что делает getQueries? Если это зависит от какого-то другого класса или ресурса, который вы можете имитировать, просто отклоните макет или выдайте ошибку.

p.s.w.g 08.04.2019 19:47

getQueries возвращает JSON... но как это сделать @p.s.w.g

Andre Moraes 08.04.2019 19:49

Если только что возвращает Json, я не вижу необходимости в блоке catch. Предположительно, он делает немного больше (например, вызывает какой-то другой метод или API или зависит от какой-то другой части приложения для генерации Json). Вам придется каким-то образом имитировать этот процесс, и это будет зависеть от вашей моделирующей среды, а также может зависеть от вашей среды тестирования. Если вы еще не выбрали фиктивный фреймворк, вам, возможно, придется сначала изучить его. Лично я использую нок для имитации REST API, но я знаю, что у Jest есть собственный имитация функциональности.

p.s.w.g 08.04.2019 19:56

Все в порядке, мне нужно сохранить его! Я просто не знаю, как заставить getQueries возвращать ошибку @p.s.w.g

Andre Moraes 08.04.2019 19:58

Изменено описание, проверьте сейчас, имеет ли смысл то, что мне нужно @p.s.w.g

Andre Moraes 08.04.2019 20:41
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
5
52
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вам нужно будет заглушить функцию до того, как обещание будет разрешено. Пытаться:

it('should getQueries return error', () => {
launcher.getQueries = stub().throws('TypeError');
launcher.initialize()
.then(() => {
// this should not happen
})
.catch((error: Error) => {
  expect(error.message).equals('Failed to initialize Rest Poller Launcher:');
});

Другие вопросы по теме