Библиотека тестирования реакции — не может прочитать свойство «прототип» неопределенного, издеваясь над импортом компонента именованного класса

#reactjs #jestjs #react-testing-library

Вопрос:

Я получаю ошибку при тестировании компонента с издевательским ребенком. Таким образом, компонент A, который я хочу протестировать, имеет дочерний компонент B, который в дальнейшем имеет дочерний компонент C. Я пытаюсь высмеять компонент C. Вот как выглядит C в исходном файле:

 // C.js

export class C extends React.Component {
  constructor(props) {
    super(props);
    autoBind(this);
  }
 // ... code ...
}
 

в моем A.test.js, У меня есть следующие

 jest.mock('<PATH_TO_C.JS>', () => ({
  C: jest.fn(() => '')
})
 

при запуске теста я получаю ошибку, указывающую на мой пользовательский рендеринг: TypeError: Cannot read property 'prototype' of undefined

Ответ №1:

Вы должны возвращать макет элемента JSX, а не функцию jest,

 jest.mock('<PATH_TO_C.JS>', () => ({
  C: () => <div>Sample Component Content</div>
})
 

Комментарии:

1. Попробовал, все равно получаю ту же ошибку.

2. Я думаю, что нам нужно увидеть все движущиеся части, чтобы понять, в чем проблема. Нужно еще кое-что проверить. Вы размещаете jest.mock заявление за пределами описания? Правильный ли путь к компоненту? Работает ли это, если вы закомментируете использование компонента C в B в реальном коде компонента?