React Native-如何在测试中指定状态?

时间:2018-11-05 17:35:22

标签: reactjs react-native testing

我目前正在使用本地状态控制某些UI元素的React Native组件上工作,即,只有将state中的某些值设置为true时才呈现某些元素。这些值会根据组件内的单击而变化。

使用react的TestRenderer测试时,我是否可以指定初始状态?如果没有,我该如何进行测试?我希望能够针对某些状态渲染组件并对其进行测试。非常感谢您提供任何有益的意见。

如有必要,我可以提供更多细节。

谢谢。

编辑:添加了一个示例来说明我的代码。这不是我的组件代码,但说明了它的行为:

interface IMyComponentProps {
    ...
}

interface IMyComponentState {
    showForm: boolean;
}

export class MyComponent extends React.Component<IMyComponentProps, IMyComponentState> {
    constructor(props: any) {
        super(props);
        // showForm is initially false
        this.state = {
            showForm: false,
        };
    }

    public render() {
        // if showForm is true then render my form component
        if (this.state.showForm) {
            return <FormComponent />;
        } else {
            // otherwise render button that changes the state to showForm: true
            // and causes a re-render
            return <Button onClick={this.buttonClickFn} />;
        }
    }

    private buttonClickFn = () => this.setState({...this.state, showForm: true});
}

1 个答案:

答案 0 :(得分:1)

可以直接设置状态以进行测试:

componentInstance.state.showForm = true;
componentInstance.forceUpdate();