如何解决是否可以在 JEST 单元测试中将 event.isTrusted 设置为 true?
我正在处理 JavaScript 事件。根据以下 MDN 文章,事件对象有一个名为 isTrusted
的标志。 https://developer.mozilla.org/en-US/docs/Web/API/Event/isTrusted
我编写了一个代码来区分用户事件(由实际用户操作触发)和程序化事件(由 element.dispatchEvent(...)
触发。我无法显示整个代码,但它类似于以下内容:
document.addEventListener('click',(event) => {
if (event.isTrusted) {
// ... client code follows
// somewhere in the code I am dispatching another custom event on body element
document.body.dispatchEvent(...);
}
});
我正在尝试在 JEST
(一个流行的单元测试库)中对这段代码进行单元测试。不幸的是,我们无法模拟真实的点击事件,因为它是为您做的自动化代码。标志 isTrusted
在 JEST 中始终设置为 false
,从而限制我测试客户端代码。
我无法直接更改 isTrusted
的值,因为它是只读属性。我正在寻找可以模拟该事件并将 isTrusted
标志设置为 true
的方法。
编辑:添加了测试代码:
describe('Event.isTrusted',() => {
beforeAll(() => {
document.body.dispatchEvent = jest.fn();
const btn = document.createElement('button');
btn.id = 'btn';
document.body.appendChild(btn);
});
...
it('should allow user events',() => {
const event = new MouseEvent('click',{
bubbles: true,cancellable: true
});
document.getElementById('btn').dispatchEvent(event);
expect(document.body.dispatchEvent).toHaveBeenCalled();
});
});
再一次,这只是一个要点。我无法显示客户端代码。我希望这会有所帮助。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。