React native 如何在react本机弹出菜单中进行单元测试行为
假设我有下面的代码:React native 如何在react本机弹出菜单中进行单元测试行为,react-native,react-native-popup-menu,React Native,React Native Popup Menu,假设我有下面的代码: <Menu> <MenuTrigger text='Select action' /> <MenuOptions> <MenuOption onSelect={() => funcOne()} text='Call funcOne' /> <MenuOption onSelect={() => funcTwo()} text='Call funcTwo' /> </Me
<Menu>
<MenuTrigger text='Select action' />
<MenuOptions>
<MenuOption onSelect={() => funcOne()} text='Call funcOne' />
<MenuOption onSelect={() => funcTwo()} text='Call funcTwo' />
</MenuOptions>
</Menu>
funcOne()}text='Call funcOne'/>
funcTwo()}text='Call funcTwo'/>
现在如何单元测试(使用酶)第一个菜单选项的onSelect
是否调用funcOne
,第二个菜单选项的onSelect
是否调用funcTwo
文档中的测试示例没有太大帮助,因为没有与检查行为相关的示例。您可以根据您在funcOne()和funcTwo()函数中的具体操作来测试它。举个例子,假设您正在更改消息的状态,那么您可以测试状态值是否已更改
在组件中初始化
this.state = {
message: ""
}
你已经在一个地方改变了
funcOne() {
.....
this.setState({message: "funcOne"});
...
}
因为你有两个菜单选项组件,你可以给他们测试
<Menu>
<MenuTrigger text='Select action' />
<MenuOptions>
<MenuOption testID={"MenuOption1"} onSelect={() => funcOne()} text='Call funcOne' />
<MenuOption testID={"MenuOption2"} onSelect={() => funcTwo()} text='Call funcTwo' />
</MenuOptions>
</Menu>
funcOne()}text='Call funcOne'/>
funcTwo()}text='Call funcTwo'/>
现在你可以这样测试了
const wrapper = shallow(<Menu/>);
expect(wrapper.state().message).toEqual("");
wrapper.find('MenuOption[testID="MenuOption1"]').simulate("Select");
expect(wrapper.state().message).toEqual("funcOne");
const wrapper=shallow();
expect(wrapper.state().message).toEqual(“”);
find('MenuOption[testID=“MenuOption1”]”)。simulate(“Select”);
expect(wrapper.state().message).toEqual(“funcOne”);
同样,MenuOption2也可以进行测试。它是一个无状态组件。如何测试在模拟第一个菜单选项的Select事件后调用了funcOne?funcOne()的具体功能是什么?也请参考这一次。有没有一种方法可以模拟实现onSelect的菜单选项?是的,有,请参考评论中的上述链接