Метод «имитация» предназначен для запуска на 1 узле.0 найдено вместо.- Jest / Фермент - PullRequest
0 голосов
/ 26 февраля 2019

Я пытаюсь протестировать onClick, но они не вызываются с помощью реквизита:

- это часть файла. Js

    handleSystemClick = () => {
// var message = All unsaved changes will be lost.`
confirmAlert({
  title: 'Confirm Navigation',
  message: ' All unsaved changes will be lost.',
  childrenElement: () => <div></div>,
  confirmLabel: 'Confirm',
  cancelLabel: 'Cancel',
  onConfirm: () => {this.setState({ toSystemEntitlments: true})},
  onCancel: () => {},
})

  }
 handleCancelClick = () => {
  window.history.back();
}

- это метод визуализации файла file.js.

render()
return(
<div className='add-edit-button' id= 'test1' onClick={() => {this.handleSystemClick()}}>System</div>
<div className='add-edit-button' onClick={() => {this.handleCancelClick()}}>Cancel</div>
<div className='add-edit-button' onClick={() => {this.handleSave()}}>Save</div>
      </div>

Я видел несколько примеров здесь на stackoverflow, и я пытался применить следующее:

 // jest mock functions (mocks this.props.func)

 // defining this.props
   const baseProps = { 

   describe(' FunctionalEntitlement  Test', () => {
   let wrapper;
   let tree;

    beforeEach(() => wrapper = shallow(<BrowserRouter><Component     {...baseProps} /></BrowserRouter>));


 it("should call handlesave function on button click", () => {
// Reset info from possible previous calls of these mock functions:
baseProps.handleSave.mockClear();
wrapper.setProps({
});
wrapper.setState({ getINITIAL_STATE:""
});
wrapper.find('.add-edit-button').at(0).simulate("click");
  expect(baseProps.handleSave).toHaveBeenCalled();
expect(toJson(wrapper)).toMatchSnapshot();

});

Также Как я мог применить то же самоеметод для первых 2 кликов на основе file.js

Спасибо за помощь

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Если вы хотите использовать shallow, есть способ получить поверхностную оболочку одного из дочерних элементов , используя метод dive .Если вам приходится часто оборачивать свои компоненты с BrowserRouter в тесте, возможно, стоит использовать вспомогательный метод для этого, например:

function shallowWithBrowserRouter(component) {
   return shallow(<BrowserRouter>{component}</BrowserRouter>).childAt(0).dive();
}
0 голосов
/ 26 февраля 2019

Может что-то придумать, но как мне улучшить следующий ответ.

Переключен мелко на Mount для отображения дочерних компонентов

  it("should  call  button click 3 times", () => {
// Reset info from possible previous calls of these mock functions:
 wrapper.setProps({
});
wrapper.setState({ 
});
wrapper.find('.add-edit-button').at(0).simulate("click");
wrapper.find('.add-edit-button').at(1).simulate("click");
wrapper.find('.add-edit-button').at(2).simulate("click");

expect(toJson(wrapper)).toMatchSnapshot();
 });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...