gpt4 book ai didi

javascript - React jest - 验证状态已更改

转载 作者:行者123 更新时间:2023-11-28 03:52:57 25 4
gpt4 key购买 nike

我使用 jest 来测试我的组件。

我想测试一个特定的方法,我知道该方法会改变状态。

it('should calculate width of publisher menu', () => {
window.innerWidth = 3000
const publisherContainer = new PubContainer(props)
console.log(publisherContainer.state.maxVisibleTabs) // maxVisibleTabs is 1
publisherContainer.resize() // here i'm using setState({maxVisibleTabs : 10})
console.log(publisherContainer.state.maxVisibleTabs) // maxVisibleTabs is 1
})

我想检查 resize 是否确实将 setState 设置为 10,但值 1 仍然存在。

我知道 setState 是异步的,并且状态不会立即发生变化,但是我有任何优雅的\解决方法来解决这个问题吗?

最佳答案

测试中处理异步代码通常有三种方法:

  1. 以某种方式使异步代码同步。这里可能不是一个选择。
  2. 轮询被测系统,直到获得正确的结果或超时。
  3. 在生产代码中创建一种机制,使测试能够知道发生了什么事 - 例如,添加事件机制,以便组件外部的代码可以注册状态更改。然后测试代码可以为它们注册并等待事件的到来。

不幸的是,Jest 没有内置轮询机制,但您可以使用 setTimeout 循环自己编写一些简单的东西。

关于javascript - React jest - 验证状态已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47817794/

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