如何使用react-native-testing-library提交表单或按输入键

dis*_*ynx 6 unit-testing react-native react-testing-library react-native-testing-library

我有以下问题:我需要测试在我的测试中是否调用了某个函数,但为了正确测试它,我需要按 Enter 或提交表单,但它似乎没有按预期工作。我已经尝试过以下操作:

\n
fireEvent.keyDown(input, { key: \'Enter\', code: \'Enter\' });\nfireEvent.submit(input);\n
Run Code Online (Sandbox Code Playgroud)\n

触发我的组件的 prop 的唯一方法onSubmitEditing是按 Enter 键。

\n

这是我正在尝试测试的代码:

\n
<Input placeholder="Cirurgi\xc3\xa3o"\n    testID=\'input_buscaCirurgiao_index\'\n    value={this.state.text}\n    autoCorrect={false}\n    keyboardType={(Platform.OS === \'android\') ? \'visible-password\' : \'default\'}\n    onChangeText={(item) => this.setState({ text: item })}\n    onSubmitEditing={() => { this._searchPressingEnter() }} // i need to test this\n    autoCapitalize=\'none\' \n/>\n
Run Code Online (Sandbox Code Playgroud)\n

这是该_searchPressingEnter函数的代码:

\n
_searchPressingEnter() {\n    Keyboard.dismiss()\n\n    let item = this.state.text\n\n    this._buscarCirurgioes(item)\n}\n
Run Code Online (Sandbox Code Playgroud)\n

一旦按下 Enter 键,_searchPressingEnter就应该调用该函数,从而触发该onSubmitEditing道具。

\n

jul*_*ves 9

在您的测试用例中,您可以触发该submitEditing事件。

// Assuming `input` is your text input element
fireEvent(input, 'submitEditing')
Run Code Online (Sandbox Code Playgroud)

有关触发事件的更多详细信息,请检查:https://callstack.github.io/react-native-testing-library/docs/api#fireevent