Jest.js Enzyme是否支持React 18版本?

1zmg4dgp  于 2023-08-01  发布在  Jest
关注(0)|答案(5)|浏览(276)

最近,React 18发布了,我已经将我的项目升级到了18。我注意到我的所有由Jest和Enzyme编写的单元测试都失败了。我使用mount from Enzyme作为我的组件的 Package 器,并注意到以下错误:

TypeError: Cannot read property 'child' of undefined

字符串
我还试图检查它是否支持React 18,但找不到任何合适的链接。
有人对此有什么想法吗?或者,在这种情况下,是否有任何变通方法可以遵循?

ee7vknir

ee7vknir1#

酶死了。(不支持React 18)
您可以阅读下面的文章以获取更多信息,但简而言之:
React 18中的API更改意味着发布React 18酶适配器将不可能

一点个人建议

虽然Migrate from Enzyme support article是可用的,但我建议您重新开始,忘记Enzyme曾经存在过。RTL绝不是酶的替代品,所以拥有一个全新的心态将帮助您充分利用它。

怎么办?

答案是,一如既往,这取决于。毕竟,你不必升级React。
我会这么做
1.开始熟悉**React Testing Library(RTL)**,一个官方推荐的React组件库。
1.制定一个规则,只使用RTL编写新的测试。
1.考虑制定一个规则,每当您需要接触测试和/或测试的组件时,将测试重写为RTL。
1.在您指定的偿还技术债务的时间内(您有指定的偿还技术债务的时间,对吗?...对吗?),将剩余的基于酶的测试重写为RTL。
1.清理您的回购从酶特定位
1.当你准备好了,升级到React 18。

aiazj4mn

aiazj4mn2#

@wojtekmaj/enzyme-adapter-react-17(React 17的非官方适配器)的维护者警告说酶已经死亡。对React 18的支持需要完全重写。链接https://dev.to/wojtekmaj/enzyme-is-dead-now-what-ekl
他建议迁移到RTL或坚持使用React 16-17

06odsfpq

06odsfpq3#

React 18在March 2022中发布。Enzyme的最后一次提交来自September 2021。假设Enzyme尚未更新以保证与React 18的兼容性似乎是公平的。

vybvopom

vybvopom4#

目前还没有React 18的官方支持:https://github.com/enzymejs/enzyme/issues/2524
但是,你可以尝试使用单独的配置和react 17来运行测试:https://github.com/enzymejs/enzyme/issues/2524#issuecomment-1116246491

68de4m5k

68de4m5k5#

不是官方的,但值得尝试作为一个短期的解决方案,直到你可以迁移到像RTL这样的东西:
https://www.npmjs.com/package/@cfaester/enzyme-adapter-react-18

相关问题