gpt4 book ai didi

jestjs - 开 Jest 无法读取 null 的属性 'createEvent'

转载 作者:行者123 更新时间:2023-12-03 17:44:18 33 4
gpt4 key购买 nike

我试图模拟被拒绝的值并得到这个错误。奇怪的是,这种构造在“成功”的情况下有效addUser.mockImplementation(value => jest.fn().mockResolvedValue(value)) ,但是当我尝试对拒绝执行相同的技巧时,它不起作用并显示“无法读取 null 的属性‘createEvent’”
这是我的测试用例

it('receives invalid value and throws an error', async () => {
addUser.mockImplementation(() =>
jest.fn().mockRejectedValue(new Error('Sample error'))
)

const enqueueSnackbar = jest.fn()
useSnackbar.mockReturnValue({ enqueueSnackbar })

const { emailInput, form, submitButton } = setup()

await act(async () => {
fillIn(emailInput, 'sample@mail.com')
})

expect(emailInput.value).toBe('sample@mail.com')
expect(submitButton).toHaveProperty('disabled', false)

await act(async () => {
fireEvent.submit(form)
})

expect(enqueueSnackbar).toHaveBeenCalledTimes(1)
expect(enqueueSnackbar).toHaveBeenCalledWith(`Sample error`, {
variant: 'error'
})})
有谁知道如何使它工作?

最佳答案

这似乎是当有人用 Google 搜索“无法读取 null 的属性‘createEvent’”时发现的第一个问题,因此将这个答案留给那些读者:
对我来说,这个错误是在测试过程中出现的。
在执行一系列测试时,某些测试或其他测试曾经因此错误而失败,没有任何迹象表明哪里出了问题。但结果证明不是测试而是组件本身:
这是一个未经模拟的 API 调用。
在钩子(Hook)中进行了 API 调用,并且该钩子(Hook)在测试失败的组件中使用。显然,Jest 在完成测试后清理了所有内容,当调用返回时,它什么也没找到,所以出错了。
mock 钩子(Hook)解决了这个问题。
如果有人遇到这样的错误,请确保模拟您拥有的任何异步逻辑,尤其是当它返回时与 DOM 交互时。

关于jestjs - 开 Jest 无法读取 null 的属性 'createEvent',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60504720/

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