Javascript 如何在此Jest测试中触发窗口加载事件?
我正试图在Rails项目中设置我的第一个DOM操纵/JQuery Jest测试。就目前的基本形式而言,我只是试图清除“导入的Javascript函数可以做任何事情”这一基本障碍 为此,我在wareFormUpdates.js.test中有以下代码: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
'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')
});
});
};