gpt4 book ai didi

reactjs - 使用 useState() 钩子(Hook)测试功能组件时设置状态

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

当我用 enzyme 测试类组件时,我可以执行 wrapper.setState({}) 来设置状态。当我使用 useState() 钩子(Hook)测试函数组件时,我现在该如何做同样的事情?

例如,在我的组件中,我有:

const [mode, setMode] = useState("my value");

我想在测试中更改模式

最佳答案

当使用钩子(Hook)中的状态时,您的测试必须忽略状态等实现细节,以便正确测试它。您仍然可以确保组件将正确的状态传递给其子组件。

您可以在 blog post 中找到一个很好的例子作者:Kent C. Dodds。

这是其中的摘录和代码示例。

依赖于状态实现细节的测试 -

test('setOpenIndex sets the open index state properly', () => {
const wrapper = mount(<Accordion items={[]} />)
expect(wrapper.state('openIndex')).toBe(0)
wrapper.instance().setOpenIndex(1)
expect(wrapper.state('openIndex')).toBe(1)
})

不依赖于状态实现细节的测试 -

test('counter increments the count', () => {
const {container} = render(<Counter />)
const button = container.firstChild
expect(button.textContent).toBe('0')
fireEvent.click(button)
expect(button.textContent).toBe('1')
})

关于reactjs - 使用 useState() 钩子(Hook)测试功能组件时设置状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55342181/

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