Тестирование реакции с помощью фермента: настройка значения для внутреннего компонента

#reactjs #jestjs #enzyme

#reactjs #jestjs #фермент

Вопрос:

Я пишу тестовые примеры с использованием enzyme и jest of для компонента React. Определение моего компонента react выглядит следующим образом

 class MyComponent extends React.Component {
    
    
  // some code here
    
  showModalandSetValues () {
      //some code here
    this.confirmModal.setFormValues (values);
    
  }
    
  render (){
    const {val1 , val2} = this.props
    
    return <div>
      // some more markup
      <MyForm>
        <MyModal ref = {ref => this.confirmModal = ref}} />
      </MyForm>
    </div>
  }  
}

export default MyComponent
  

Я использую неглубокий метод фермента. Как я могу установить значение this.confirmModal в test? Оно устанавливается только с помощью метода render . Любезный совет.

Ответ №1:

они говорят, что ссылки не установлены в shallow() .

Вы можете использовать mount() , но фиктивные подкомпоненты для достижения полуплоскостного рендеринга:

 import MyModal from '../some/path/MyModal.js'; // to be able to .find(MyModal)

// modal is rendered as a span
jest.mock('../some/path/MyModal.js', () => (props) => <span {...props} />);

...
    const wrapper = mount(<MyComponent />);