javascript - 如何在 Jest 中模拟输入文本并按下 Enter 键

标签 javascript reactjs jestjs react-testing-library

我有一个 Material-ui 文本字段,我想在其中模拟用户输入并按 Enter 键。我该如何在 Jest 中做到这一点? 我浏览了相关答案,但没有一个对我有用。

尝试了以下方法:

        const input = getByTestId('emailId').querySelector('input')
        fireEvent.change(input, {
            target: { value: 'abc' }
        }); //Up to this point works

以下均无效:

        fireEvent.submit(getByTestId('emailId').querySelector('input'));
        input.dispatchEvent(new KeyboardEvent('keydown',{'key':'Enter'}));
        getByTestId('emailId').querySelector('input').simulate('keydown', {key: 'Enter'})

测试下的代码是:

<CustomTextField
                data-testid="emailId"
                textLabel={t('email', 'Email')}
                autocomplete="email"
                value={userEmail}
                onChange={onEmailchange}
                handleKeyHandler={submitOnEnter}
                autoFocus
            />

CustomTextField 是另一个返回文本字段的组件:

 <TextField
                        size="small"
                        data-testid="emailId"
                        id={textFieldId || 'defaultTextFieldId'}
                        label={textLabel}
                        variant="outlined"
                        fullWidth
                        onChange={handleOnchange}
                        onBlur={onBlur}
                        value={value}
                        inputRef={txtField}
                        autoComplete={autocomplete}
                        autoFocus={autoFocus}
                        type={textFieldType}
                        onKeyPress={handleKeyHandler}
                        InputLabelProps={{
                            classes: {
                                root: classes.customLabelStyle,
                                focused: classes.cssFocused
                            }
                        }}
                        InputProps={{
                            classes: {
                                root: classes.cssOutlinedInput,
                                focused: classes.cssFocused,
                                notchedOutline: classes.notchedOutline
                            },
                            endAdornment: showSearchIcon ? inputAdornment : null
                        }}
                        {...textFieldProps}
                    />

最佳答案

对我有用的是:

fireEvent.keyPress(input, { key: 'Enter', charCode: 13 });

关于javascript - 如何在 Jest 中模拟输入文本并按下 Enter 键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67487733/

相关文章:

javascript - React-router-dom - 链接更改 url 但不呈现

jestjs - 为什么在 Jest 中运行时 for..of 循环对 Iterables 不起作用?

javascript - 更改状态 reducer redux 中的属性值

c# - 按钮点击不起作用

javascript - 为什么 typeof let === 'undefined' ?

javascript - 如何更改 Three.js 中几何体的初始位置?

reactjs - 当我只能在浏览器中使用 React 时,为什么要使用 create-react-app 呢?

javascript - 库包装器 React 组件,如何使用 Enzyme 查找 DOM 子项?

angular - 意外的 token 导出开 Jest

javascript - 谷歌翻译覆盖选择更改事件