Как найти типографский компонент, завернутый в MockedProvider, при тестировании с помощью enzyme

#reactjs #testing #enzyme #react-apollo #react-testing-library

#reactjs #тестирование #enzyme #react-apollo #react-testing-library

Вопрос:

Новичок в тестировании, пытаюсь выяснить, как проверить, правильно ли родительский компонент отображает дочерние компоненты. Допустим, это основной компонент:

 export const ParentComponent = () => {
 const {loading, error, data} = useQuery(someQuery);
 //some work with the data
 return (
 <>
   <div>
     <Component1></Component1>
     <Component2></Component2>
   </div>
   <div>
     <div>
       <Typography> Some text </Typography>
     </div>
   </div>
 </>
}
  

Я хочу найти Typography компонент, это то, что я имел в виду, но он его не находит:

   it("should render a Typography component", async () => {
    const wrapper = createMount(
      <MockedProvider mocks={mocks} addTypename={false}>
        <ParentComponent />
      </MockedProvider>
    );
    wrapper.update();
    let parentComponent = wrapper.find(ParentComponent);
    expect(parentComponent).toHaveLength(1); // passes
    expect(parentComponent.childAt(1).find(Typography)).toHaveLength(1); //doesn't pass
})

  

Я также воспроизвел следующее: https://www.apollographql.com/docs/react/development-testing/testing/#testing-final-state
Вместо поиска 'p' тега я хочу найти Typography компонент

Ответ №1:

material-ui не всегда имена его html-элементов совпадают с именами компонентов react. Когда дело доходит до тестирования, я лично просто устанавливаю id для компонента и использую его для поиска моего компонента.