Я занимаюсь разработкой приложения в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});
}
Я пробовал разные сценарии, но, похоже, ничего не работает.
Может кто-нибудь дать мне знать, как решить вышеупомянутое?