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