【发布时间】:2021-12-04 09:17:30
【问题描述】:
我正在尝试编写一个测试,其中抽屉项目从不可见变为可见。我实现可见性开关的方式是将抽屉项目上的drawerItemStyle 属性从display: "none" 切换到display: "flex"。这适用于android模拟器。但是,当我使用 react native 测试库渲染 Drawer 导航器时,即使 DrawerItemStyle 属性设置为 display: "none",DrawerItem 也会存在。
有了这个:
<DrawerStack.Screen
name="Name"
component={Component}
options={{
title: "Title",
drawerItemStyle: {
display: "none",
},
}}
/>
此测试通过:
const { getByText } = render(<DrawerNavigator />);
getByText("Title")
- 是否预计设置显示“无”仍会在 react-test-renderer 中呈现?
- 有没有更好的方法来切换可见性?
- 有更好的方法来测试可见性吗?
更新:找到解决方案
我必须这样做:
const { container } = render(<Component />);
const drawerItemsProps = container .findAllByType(DrawerItem).map((e: any) => e.props);
const targetProps = drawerItemsProps[drawerItemsProps.findIndex((e: any) => e.label === "Title")];
const { style: { display }, } = targetProps;
expect(display).toEqual('none');
【问题讨论】:
-
很高兴您找到了解决方案,请将其作为答案发布并接受
标签: react-native react-test-renderer react-native-testing-library jest-expo testing-libraryreact-native