Spa*_*lex 5 javascript jestjs react-native
我正在尝试在 React Native 中进行集成测试(使用 Jest 和 RN 测试库),并且所有其他测试都按预期工作,但这个测试似乎停止了fireEvent.press()从特定组件的按钮实际触发事件的操作onPressTouchableHighlight
工作流程:
console.log()或者永远不会setPerson发生onButtonPress火灾export default function PondLeadSnippet({person, setPerson}) {
const onButtonPress = useCallback(() => {
console.log("========> onButtonPress");
setPerson({...person, flagged: true});
}, [false]);
return (
<View style={Style.container}>
<View style={Style.content}>
<Label accessibilityRole='person-name' scale='medium'>{person.name}</Label>
<Text style={Style.detail}>{detail}</Text>
<Text>{person.flagged ? 'Flagged' : 'Not Flagged'}</Text>
</View>
<TouchableHighlight testID={`flag-person-${person.uuid}`} onPress={onButtonPress}}>
<Text>You know it</Text>
</TouchableHighlight>
</View>
);
}
Run Code Online (Sandbox Code Playgroud)
export default function PondLeadSnippet({person, setPerson}) {
const onButtonPress = useCallback(() => {
console.log("========> onButtonPress");
setPerson({...person, flagged: true});
}, [false]);
return (
<View style={Style.container}>
<View style={Style.content}>
<Label accessibilityRole='person-name' scale='medium'>{person.name}</Label>
<Text style={Style.detail}>{detail}</Text>
<Text>{person.flagged ? 'Flagged' : 'Not Flagged'}</Text>
</View>
<TouchableHighlight testID={`flag-person-${person.uuid}`} onPress={onButtonPress}}>
<Text>You know it</Text>
</TouchableHighlight>
</View>
);
}
Run Code Online (Sandbox Code Playgroud)
当您尝试触发事件时,您的 TouchableHighlight 可能尚未呈现。尝试更换
expect(getByTestId(`flag-person-${bobSaget.uuid}`)).toBeTruthy();
Run Code Online (Sandbox Code Playgroud)
和
await waitFor(() => {
expect(getByTestId(`flag-person-${bobSaget.uuid}`)).toBeTruthy();
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6915 次 |
| 最近记录: |