Javascript 如何在此Jest测试中触发窗口加载事件?

Javascript 如何在此Jest测试中触发窗口加载事件?,javascript,jquery,html,ruby-on-rails,jestjs,Javascript,Jquery,Html,Ruby On Rails,Jestjs,我正试图在Rails项目中设置我的第一个DOM操纵/JQuery Jest测试。就目前的基本形式而言,我只是试图清除“导入的Javascript函数可以做任何事情”这一基本障碍 为此,我在wareFormUpdates.js.test中有以下代码: 'use strict'; import pledge_form_updates from '../../app/javascript/components/PledgeFormUpdates.js'; test('Displays GDPR c

我正试图在Rails项目中设置我的第一个DOM操纵/JQuery Jest测试。就目前的基本形式而言,我只是试图清除“导入的Javascript函数可以做任何事情”这一基本障碍

为此,我在wareFormUpdates.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');
});
因此,当我运行测试时,我希望看到打印输出,包括“hello world”、“mellow curled”和“yellow twirled”。但实际上,它在第一次输出后停止,因此可能窗口
load
事件实际上没有被触发(我通过注释
窗口.addEventListener…
行确认了这一点,然后查看所有三个打印输出)


我做错了什么?或者更确切地说,我应该如何触发加载事件?(我还尝试了
$(window.load();
,但这只会引发一个类型错误)

我找到了一个解决方法,尽管它看起来很粗糙。在测试文件中,如果我替换该行

window.addEventListener(“加载”,函数(){

$(窗口).on(“加载”,函数(){

然后运行测试(包括
$(窗口).trigger('load');
语句)打印所有日志行

我一定是遗漏了什么,因为我不相信Jest会要求JQuery触发页面加载事件,但至少目前是这样

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')
    });
  });
};