gpt4 book ai didi

reactjs - react Jest : trigger 'addEventListener' 'message' from tests

转载 作者:行者123 更新时间:2023-12-05 01:28:20 30 4
gpt4 key购买 nike

我的 React 项目有一些代码监听 message event .

const onMessage = ({ data }) => {
console.log('On onMessage has been fired');
}

window.addEventListener('message', onMessage);

有谁知道如何从我的测试套件中触发此事件?我已经尝试过诸如 events 之类的库和许多事情,例如

test('Recieves message', async () => {
//Some setup..

//trigger the addEventListener('message')
window.parent.postMessage('Hello', '*'); //doesn't work
window.postMessage('Hello', '*'); //doesn't work
const ee = new events.EventEmitter();
ee.emit('Hello') //doesn't work

//Some further tests...
})

似乎没有任何效果。请注意我需要小心这个测试,我不会模拟和覆盖所有 addEventListener。我仍然需要核心代码来完成我打算做的事情。我只需要从我的测试中触发或发出消息事件

最佳答案

如果你想创建一个 window.postMessage 事件,你可以利用 fireEvent react-testing-library api。

您的测试代码将如下所示:


import { fireEvent } from '@testing-library/react';


test('Recieves message', async () => {
// Some setup..

// trigger the addEventListener('message')
fireEvent(
window,
new MessageEvent("message", { data: { foo: "bar" }, origin: "whatever.com" })
)

//Some further tests...
})

关于reactjs - react Jest : trigger 'addEventListener' 'message' from tests,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68756255/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com