Событие клика внутри модального теста - PullRequest
0 голосов
/ 11 апреля 2019

Попытка запустить тест для следующего кода, но узел не найден. Использование jest и энзима для ReactJS

 render () {
return (
  this.state.permissionsLoaded ?
  this.state.localPermissions[globals.UI_DATASOURCEDESIGNER] ? 
  this.state.datasourcePermissionsLoaded ?
  this.state.allowCurrentDatasource ?
      <div>
       <Modal isOpen={this.state.addRequestModalOpen} style={shareModal}>
       <div title="Close Window Without Saving" className="sidemodal_addnew_x" onClick={() => {this.closeAddModal()}}><FontAwesome name='xbutton' className='fa-times' /></div>

Продолжайте получать следующую ошибку: Метод «имитация» должен бытьзапустить на 1 узле.Вместо этого найдено 0.

Вот что у меня есть для моего теста:

beforeEach(() => wrapper = mount(<MemoryRouter keyLength={0}><Datasource {...baseProps} /></MemoryRouter>));


 it("Test Click event on Add DataSource ", () => {
  wrapper.find('Datasource').setState({
   permissionsLoaded:true,
   localPermissions:true,
   datasourcePermissionsLoaded:true,
   allowCurrentDatasource:true,
   addRequestModalOpen:true

   })
  wrapper.update();
  wrapper.find('Datasource').find('.sidemodal_addnew_x').simulate('click')

 });

Вот список моего состояния:

permissionsLoaded: false,
datasourcePermissionsLoaded: false,
allowCurrentDatasource: false,
localPermissions:{
    [globals.UI_DATASOURCEDESIGNER]:false,
  }

1 Ответ

1 голос
/ 11 апреля 2019

Что ж, похоже, вы пытаетесь найти узел, который будет отображаться условно, если все переменные состояния, которые вы упомянули, являются истинными, чего нет ни у одной из них (вы фактически устанавливаете их все в ложное значение и обновляете оболочку заранее). Это означает, что нет .sidemodal_addnew_x, который можно было бы использовать для симуляции клика, поэтому вы получаете это сообщение об ошибке.

Если вы хотите проверить наличие этого компонента, вы можете сделать следующее:

expect(wrapper.find('Datasource').find('.sidemodal_addnew_x').exists()).to.equal(false);

Если вы хотите проверить щелчок, убедитесь, что компонент получает .sidemodal_addnew_x отрендерен, установив переменные состояния в true:

it("Test Click event on Close Window Without Saving", (done) => {
  baseProps.onClick.mockClear();
  wrapper.find('Datasource').setState({
    permissionsLoaded:true,
    localPermissions:true,
    datasourcePermissionsLoaded:true,
    allowCurrentDatasource:true,
    addRequestModalOpen:true,
    }, () => {
      wrapper.update();    
      wrapper.find('Datasource').find('.sidemodal_addnew_x').simulate('click');
      done();
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...