#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 в реальном коде компонента?