Как вы тестируете делегированных слушателей с помощью JQuery, JSDOM и Jest?Jquery

Программирование на jquery
Anonymous
Как вы тестируете делегированных слушателей с помощью JQuery, JSDOM и Jest?

Сообщение Anonymous »

У меня настроены Jest и JSDOM для запуска тестов приложения JQuery. У меня есть тест на то, что происходит, когда вы обновляете родительский вопрос, который должен добавить класс к вопросу об изменении.

Код: Выделить всё

const updatedValue = 'Yes';
// Parent Question
$('[data-qid="217ec445"]').find('select').val(updatedValue);
$('[data-qid="217ec445"]').find('select')[0].dispatchEvent(new Event('change')); // manually trigger change

// Child Question
const isHidden = $('[data-qid="1ff03b89"]').hasClass('isHidden');
expect(isHidden).toBeFalsy();
Этот тест не пройден, если код написан с делегированным прослушивателем следующим образом:

Код: Выделить всё

$('[data-qid="217ec445"]').on('change', 'select', _parentsChangeHandler);
Однако тест проходит успешно, если код написан с использованием обычного прослушивателя, например:

Код: Выделить всё

$('[data-qid="217ec445"]').find('select').on('change', _parentsChangeHandler);
Из-за динамического HTML-кода приложения ему требуется делегированный прослушиватель. Как заставить делегированных слушателей работать в Jest и JSDOM?

Подробнее здесь: https://stackoverflow.com/questions/789 ... m-and-jest

Вернуться в «Jquery»