首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何测试TextInput在react本机中的值

如何测试TextInput在react本机中的值
EN

Stack Overflow用户
提问于 2020-07-13 13:59:46
回答 1查看 1.1K关注 0票数 1

我在this线程中遵循了所选的答案,但我无法理解。我想测试一个TextInput组件的值,这样我就可以检查它的长度了,现在实现这个目标的正确方法是什么?

我的组件看起来像这样:

代码语言:javascript
复制
import React, {useState, useEffect} from 'react';
import {TextInput} from 'react-native';

export default function TextInputComponent(props) {
    const [text, setText] = useState('');

    useEffect(() => {
        props.text ? setText(props.text) : setText('');
    }, []);

    const handleInputTextChange = text => {
        setText(text);
    };

    return (
        <TextInput
            onChangeText={text => handleInputTextChange(text)}
            value={text}
            maxLength={maxLength}
            testID="text-input"
        />

    );
}

到目前为止,我构建的测试文件:

代码语言:javascript
复制
import React from 'react';
import renderer from 'react-test-renderer';
import {render} from 'react-native-testing-library';
import TextInputComponent from 'components/textInputComponent/textInputComponent';

describe('<TextInputComponent />', () => {
    it('renders correctly', () => {
        renderer.create(<TextInputComponent />);
    });

    it('should show "AAA" with text="AAAA" and maxLength="3" props', () => {
        const props = {
            text: 'AAAA',
            maxLength: 3,
        };

        const {queryByTestId} = render(<TextInputComponent {...props} />);

        const textInput = queryByTestId('text-input');

        console.log(textInput);
    });
});
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-13 15:33:26

我认为您想要做的是将最初在道具中传递的文本限制为所传递字符的maxLength。

在组件useEffect()中,

而不是:

代码语言:javascript
复制
props.text ? setText(props.text) : setText('');

切片初始文本:

代码语言:javascript
复制
props.text ? setText(props.text.slice(0, maxLength)) : setText('');

这也适用于文本长度小于maxLength的情况。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62877505

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档