Невозможно вызвать отправку формы, используя mocha - PullRequest
0 голосов
/ 06 декабря 2018

Я занимаюсь разработкой приложения вactjs и использую mocha для написания тестовых примеров.Так что у меня есть форма с некоторыми элементами управления вводом и кнопкой Сохранить.При нажатии кнопки «Сохранить» я вызываю форму «Отправить» (метод - submitAppForm).Приложение работает нормально.

Однако, когда я пишу контрольный пример, я не могу вызвать метод отправки формы.

Код формы:

<AvForm onSubmit={this.submitAppForm} model={this.state} ref={c => (this.form = c)}>
<Button id='submitAnalyticsForm' bsClass="btnColor btnCustomClass" type="submit">{this.saveUpdateBtn}</Button>
<!-- Input Controls Come Here -->

Контрольный пример Мокко:

<AvForm onSubmit={this.submitAppForm} model={this.state} ref={c => (this.form = c)}>
<Button id='submitAnalyticsForm' bsClass="btnColor btnCustomClass" type="submit">{this.saveUpdateBtn}</Button>
<!-- Input Controls Come Here -->

it('submits form data', () => {
    const wrapper = shallow(<AddAppAnalyticsComponent/>);
    const submitFormSpy = sinon.createStubInstance(AddAppAnalyticsComponent.prototype.submitAppForm); sinon.stub(AddAppAnalyticsComponent.prototype.submitAppForm);
    wrapper.update();
    componentDidMountStub = sinon.stub(AddAppAnalyticsComponent.prototype, 'componentDidMount').callsFake(function() {

    });   

    const wrapper2 = mount(<AddAppAnalyticsComponent />);
    //Setting values to the input controls
    wrapper.find(AvForm).find('#appName').simulate('change', {target: {value: 'dummy name'}});
    wrapper.find(AvForm).find('#mouseOverText').simulate('change', {target: {value: 'dummy name'}});
    wrapper.find(AvForm).find('#appSummary').simulate('change', {target: {value: 'dummy name'}});
    wrapper.find(AvForm).find('#groupSelectBox').simulate('change', {target: {value: '1'}});
    simulateChangeEvent(wrapper2.find(AvForm).find('#roleMultiSelect'));
    wrapper.find(AvForm).find('#appUrl').simulate('change', {target: {value: 'dummy name'}});

    wrapper.update();
    const button = wrapper.find(AvForm).find('#submitAnalyticsForm');
    expect(button).to.be.present();
    button.simulate('click');
    wrapper.find(AvForm).simulate('submit');
    expect(submitFormSpy).to.have.been.called;
}

function simulateChangeEvent(inputWrapper: ReactWrapper<any, any>) {
    expect(inputWrapper).to.be.present();
    const el = inputWrapper.getDOMNode() as HTMLInputElement;



if (el.type === 'checkbox') {
        el.checked = !el.checked;
    }


inputWrapper.simulate('change', {target: el});

}

Я пробовал разные сценарии, но, похоже, ничего не работает.

Может кто-нибудь дать мне знать, как решить вышеупомянутое?

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