Я не могу сделать шутку функционального тестирования вообще. Вот мой компонент: - PullRequest
0 голосов
/ 05 июля 2018

Я изо всех сил пытаюсь провести функциональное тестирование, используя шутки и энзимы.

когда я пишу тестовые случаи, он всегда возвращает NULL.

Функция, над которой я издеваюсь, всегда возвращает NULL.

Я пытался, так что, может быть, примеры для шпионажа или насмешек над функциями, но все равно я получу ошибки.

в основном мне нужно вызвать это onClickButtonNext в Jest.

class ProfileType extends React.Component {

    constructor(props) {
        super(props);
        this.state = {
            selectedProfileType: ''
        }
    }

    componentDidMount() {
        this.setState({ selectedProfileType: this.props.profileType });
        this.props.setWorkflowDirty();
    }

    onClickButtonNext = () => {
        this.props.onClickNext({ profileType: this.state.selectedProfileType });
    }

    onClickButtonCancel = () => {
        this.props.onClickCancel();
    }

    render() {
        const menus = ["Contact"];

        const profileOptions = ProfileTypes.map((profile, i) => {
            profile.selected = this.state.selectedProfileType === profile.name;
            return (
                <IconCard key={i} profile={profile} index={i} type="radio" onSelectProfile={() => this.setState({ selectedProfileType: profile.name })} />
            )
        }
        );

        return (
            <ScreenCover isLoading={this.props.isLoading}>
                <CoreoWizScreen menus={menus} activeFlowId={0} isNextDisabled={this.state.selectedProfileType === '' || this.state.selectedProfileType === 'Guardian'} onNextClick={this.onClickButtonNext} onCancelClick={this.onClickButtonCancel}>
                    <div className="container-fluid mainContent px-5 d-flex align-items-start flex-column">
                        <div className="row d-block">
                            <div className="col-md-12 py-5 px-0">
                                <h4 className="font-weight-normal mb-4">Select My Profile Type</h4>
                                <PanelCard>
                                    {profileOptions}
                                </PanelCard>
                            </div>
                        </div>
                    </div>
                </CoreoWizScreen>
                <CoreoWizFlow coreoWizNavigationData={CoreoWizNavigationData} activeFlowId={0} />
            </ScreenCover>
        )
    }
}

function mapDispatchToProps(dispatch) {
    return {
        onClickCancel: () => dispatch(onCancelClick()),
        onClickNext: (data) => dispatch(onProfileTypeNext(data)),
        setWorkflowDirty: () => dispatch(setWorkflowDirty())
    }
}

function mapStateToProps(state) {
    return {
        profileType: state.onboardingState.profileData.profileType,
        isLoading: state.onboardingState.loading
    }
}

export default withRouter(connect(mapStateToProps, mapDispatchToProps)(ProfileType));


test.js

    it('ProfileType', () => {
      let wrapper = shallow(<ProfileType/>);
      wrapper.instance().onClickButtonNext = jest.fn();
      wrapper.update();
      wrapper.instance().onClickButtonNext;
      expect(wrapper.instance().onClickButtonNext).toHaveBeenCalled;
}

это не работает вообще. Пожалуйста, помогите мне !!!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...