Функция тестирования, которая запускает загрузку файла с помощью jest

#javascript #typescript #unit-testing #testing #jestjs

#javascript #typescript #модульное тестирование #тестирование #jestjs

Вопрос:

Я пытаюсь протестировать эту функцию с помощью библиотеки JEST (я также использую enzyme в проекте), но я полностью застрял.

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

В основном, это csv, tsv и текст.

 /**
 * Function creating text file and starting download process
 *
 * @param name - file name
 * @param extension - file extension
 * @param content - file content
 */
export const downloadTextFile = (name: string, extension: string, content: string) => {
    const link = document.createElement('a');
    link.className = 'download-helper';
    link.download = name   '.'   extension;
    link.href = `data:application/${extension},`   escape(content);
    link.click();
};
  

Я хочу выработать хорошие навыки тестирования, поэтому я также пытаюсь понять крайние случаи, подобные этому здесь. Есть какие-нибудь советы о том, как это запустить?

👋

Ответ №1:

Эту функцию не так просто протестировать, потому что она не возвращает никакого значения и выполняет побочные эффекты. Решением этой проблемы является использование jest spies для издевательства над createElement функцией. Пример:https://codesandbox.io/s/6xp9lqjzk3

Комментарии:

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