gpt4 book ai didi

javascript - ReactJS Selenium 测试

转载 作者:行者123 更新时间:2023-11-28 20:54:39 26 4
gpt4 key购买 nike

因此,我希望为 ReactJS 应用程序编写集成级别测试(您正在与真实数据库对话,实际上没有模拟任何东西),并且认为 Selenium 是此类测试的默认选择。使用 Angular 1.x,您可以判断 Angular 的摘要周期是否仍在处理 DOM,从而消除了添加低效且不稳定的 sleep 的需要。

我可以使用 ReactJS 中的类似东西来代替一堆古怪的 sleep 命令吗?

最佳答案

始终从根组件渲染

有一个回调可以传递给渲染函数:

ReactComponent render(
ReactElement element,
DOMElement container,
[function callback]
)

您还可以监听该顶级组件的 componentDidUpdate 方法。

不幸的是,这只有在您始终从顶级组件进行渲染时才有效,这在某种程度上意味着您可以管理 React 之外的所有状态,而无需使用任何本地状态,并以纯功能方式将其用作高效的模板引擎。 Some frameworks帮助你这样做。

即使是 Flux 也没有真正强制执行此操作(至少在最初的实现中),因为 Flux 商店不一定从最顶层作为 props 注入(inject)。 (它们在 atom-react 中)

并不总是从根组件渲染

我不知道这个问题有什么优雅的解决方案,但我会这样做:

  • 在所有组件上实现所有生命周期方法,例如使用 Mixin,并从这些回调中调用全局函数 notifyReactIsWorking
  • 使用 _.debounce(changeMeter, 1000, false)notifyReactIsWorking 进行去抖动

这样,当 notifyReactIsWorking 被调用时,这在某种程度上意味着 React 已经稳定,因为没有一个生命周期方法被调用超过 1 秒。

这是一个 hack,但在大多数情况下应该可行。

也对更高效的解决方案感兴趣:)

关于javascript - ReactJS Selenium 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29903695/

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