gpt4 book ai didi

reactjs - jest 中的模拟动画完成回调

转载 作者:行者123 更新时间:2023-12-03 14:26:20 26 4
gpt4 key购买 nike

我正在尝试使用 Jest 为使用 react-transition- 中的 TransitionReact 组件编写单元测试组。我需要模拟 Transition,这样我的测试就不必等待动画完成。但是,除了“跳过”动画之外,我还需要 onExited 回调在我的模拟 Transition 组件上触发。

以下是我的 Component.js 使用 Transition 的方式:

...
return (
<Transition
timeout={1500}
in={this.state.show}
onExited={handleExited}>
{status =>
<button onClick={this.setState({show: false}) className={`component-${status}`}>button</button>
}
</Transition>
)

这是我的 Component.test.js:

import React from 'react'
import {render, fireEvent} from 'react-testing-library'

import Component from '../Component'

test('check', () => {
const handleCompletion = jest.fn()
const {getByText} = render(
<Component
onButtonClick={handleCompletion}
/>
)
const button = getByText('button')
fireEvent.click(button)
expect(handleCompletion).toHaveBeenCalledTimes(1)
})

这个想法是,一旦单击按钮,组件就会产生动画,然后在完成时触发回调。

如何正确模拟 Transition 以便它跳过动画但仍触发 onExited 回调?

最佳答案

您可以使用 jest.mock 模拟模块,如下所示:

jest.mock('react-transition-group', () => ({
Transition: (props) => {
props.onExited() // you can call it asynchronously too, if you wrap it in a timeout
return <div>
{props.in ? props.children() : null}
</div>
}
}))

关于reactjs - jest 中的模拟动画完成回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52965112/

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