#reactjs #unit-testing #jestjs #react-testing-library #jest-dom
Вопрос:
Я тестирую компонент react с помощью RTL, и каждый раз, когда я запускаю тест, я получаю,
"messageParent" can only be used inside a worker
**Вот код
describe('Header', () => {
it('validates header component is rendered', () => {
const { getByTestId } = render(<Header patientName="Jake Bland" />);
expect(getByTestId('patient-name')).toHaveTextContent(/^Jake Bland$/);
expect(getByTestId('dateRange')).toBe(dateRange);
});
});
Любая помощь в этом будет очень признательна.
Ответ №1:
У меня была та же проблема, и она была вызвана вызовом toBe()
или toEqual()
на HTMLElement. Таким образом, ваш наиболее вероятный виновник находится здесь, так getByTestId
как возвращает элемент HTMLElement:
expect(getByTestId('dateRange')).toBe(dateRange);
Я исправил свою проблему, проверив вместо этого текстовое содержимое элемента.
expect(getByTestId('dateRange')).toHaveTextContent('...');
Ответ №2:
Привет, у меня была та же проблема, потратив некоторое время на поиск в Интернете, я нашел это: форум по проблемам github
оказалось, что эта проблема вызвана версией node12, которую я понизил до версии 10, и все работало, я также обновил до версии 14, и это тоже работает.
проверьте, какая у вас версия узла в терминале ur:
- узел -v, если (версия 12) обновит его!
- nvm устанавливает v14.8.0 (что-то вроде этого или leates)
- nvm использует версию v14.8.0 (или любую другую версию, которую вы, возможно, захотите установить, выше 12)
надеюсь, это поможет
Ответ №3:
У меня была та же ошибка, но я смог ее исправить, импортировав «@testing-library/jest-dom » в мой тестовый файл следующим образом:
import '@testing-library/jest-dom'
Оказалось, что приведенный выше пакет является peerDependency для «@testing-library/react». Отсюда и Ошибка.
Если вы сочтете это полезным, поставьте лайк, чтобы другие разработчики могли извлечь выгоду.
Комментарии:
1. Пожалуйста, скопируйте и вставьте код в ответ в виде текста вместо изображений.