Я пытаюсь настроить мой первый тест DOM-манипуляции / JQuery Jest в моем проекте Rails. В своей основной форме на данный момент я просто пытаюсь устранить основные препятствия: «импортированные функции Javascript делают что-либо вообще».
Для этого у меня есть следующий код в PledgeFormUpdates.js.test:
'use strict';
import pledge_form_updates from '../../app/javascript/components/PledgeFormUpdates.js';
test('Displays GDPR checkbox on EU country selection', () => {
// Set up our document body
document.body.innerHTML =
'<select id="pledge_pledgor_home_country" class="country-select"></select>'// +
pledge_form_updates();
const $ = require('jquery');
$(window).trigger('load');
$("#pledge_pledgor_home_country").trigger('change');
});
И в PledgeFormUpdates.js у меня есть следующее:
export default function() {
console.log('hello world');
window.addEventListener("load", function() {
console.log('mellow curled');
$("#pledge_pledgor_home_country").change(function() {
console.log('yellow twirled')
});
});
};
Поэтому, когда я запускаю тест, я ожидаю увидеть распечатку, включая «Привет мир», «мягко завитый »и« желтый закрученный ». Но на практике он останавливается после первого вывода, и поэтому предположительно событие окна load
фактически не запускается (что я подтвердил, закомментировав строку window.addEventListener...
, а затем увидев все три распечатки).
Что я здесь не так делаю - точнее, как должен вызвать событие загрузки? (Я также пытался $(window).load();
, но это просто вызывает ошибку TypeError)