Как вы тестируете делегированных слушателей с помощью 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
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

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