javascript - 使用 Jest 测试 React Native 时如何模拟 LayoutAnimation
问题描述
我正在使用 Jest 和react-native-testing-library来测试我的组件。
在我的一个组件中,我有以下代码:
const handleToggleFilters = () => {
LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);
setPostFiltersActive(!postFiltersActive);
};
但是,在测试我的组件时,出现以下错误
TypeError: require(...).configureNextLayoutAnimation is not a function
82 |
83 | const handleToggleFilters = () => {
> 84 | LayoutAnimation.configureNext(LayoutAnimation.Presets.spring);
| ^
85 | setPostFiltersActive(!postFiltersActive);
86 | };
87 |
我添加jest.mock('react-native')
到我的 setup.js 文件中,但它开始通过我的测试套件的其余部分抱怨其他丢失的实体......我是否必须模拟整个react-native
库才能使其工作?
解决这个问题的最佳方法是什么?
解决方案
在查看了react-native
github 上的某些测试之后,看起来他们只是简单地模拟了文件本身。
// Libraries/Components/Keyboard/__tests__/Keyboard-test.js
jest.mock('../../../LayoutAnimation/LayoutAnimation');
所以在我的setup.js
文件中我只是做了
jest.mock(
'../node_modules/react-native/Libraries/LayoutAnimation/LayoutAnimation.js',
);
我的测试通过了。
推荐阅读
- c# - ARM64 机器上用于 Fedora 29 的 AC# IDE
- maven - manifest.mf 中的范围版本错误
- azure - 在 Azure 函数中管理 SignalR 服务中的组
- php - 如何在保持换行符的同时清理 Textarea?
- ruby - 有没有办法在不被禁止的情况下发出http请求?
- c# - C# Windows 窗体 - WebBrowser 显示一些 UI 故障
- c# - 如何过滤特定的三种文件类型。(.count,.switch,.data)
- rust - Rustls(或 briansmith/ring)AES CBC 选项 DONT_INSERT_EMPTY_FRAGMENTS 类似物
- javascript - 如果在 SPA(单页应用程序)中被其他页面加载中断,如何避免以前的 ajax 响应?
- java - postgresql 序列相关问题“id 重复”?