最近,React 18发布了,我已经将我的项目升级到了18。我注意到我的所有由Jest和Enzyme编写的单元测试都失败了。我使用mount from Enzyme作为我的组件的 Package 器,并注意到以下错误:
TypeError: Cannot read property 'child' of undefined
字符串我还试图检查它是否支持React 18,但找不到任何合适的链接。有人对此有什么想法吗?或者,在这种情况下,是否有任何变通方法可以遵循?
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。
aiazj4mn2#
@wojtekmaj/enzyme-adapter-react-17(React 17的非官方适配器)的维护者警告说酶已经死亡。对React 18的支持需要完全重写。链接https://dev.to/wojtekmaj/enzyme-is-dead-now-what-ekl他建议迁移到RTL或坚持使用React 16-17
06odsfpq3#
React 18在March 2022中发布。Enzyme的最后一次提交来自September 2021。假设Enzyme尚未更新以保证与React 18的兼容性似乎是公平的。
vybvopom4#
目前还没有React 18的官方支持:https://github.com/enzymejs/enzyme/issues/2524但是,你可以尝试使用单独的配置和react 17来运行测试:https://github.com/enzymejs/enzyme/issues/2524#issuecomment-1116246491
68de4m5k5#
不是官方的,但值得尝试作为一个短期的解决方案,直到你可以迁移到像RTL这样的东西:https://www.npmjs.com/package/@cfaester/enzyme-adapter-react-18
5条答案
按热度按时间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。
aiazj4mn2#
@wojtekmaj/enzyme-adapter-react-17(React 17的非官方适配器)的维护者警告说酶已经死亡。对React 18的支持需要完全重写。链接https://dev.to/wojtekmaj/enzyme-is-dead-now-what-ekl
他建议迁移到RTL或坚持使用React 16-17
06odsfpq3#
React 18在March 2022中发布。Enzyme的最后一次提交来自September 2021。假设Enzyme尚未更新以保证与React 18的兼容性似乎是公平的。
vybvopom4#
目前还没有React 18的官方支持:https://github.com/enzymejs/enzyme/issues/2524
但是,你可以尝试使用单独的配置和react 17来运行测试:https://github.com/enzymejs/enzyme/issues/2524#issuecomment-1116246491
68de4m5k5#
不是官方的,但值得尝试作为一个短期的解决方案,直到你可以迁移到像RTL这样的东西:
https://www.npmjs.com/package/@cfaester/enzyme-adapter-react-18