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

#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:

  1. узел -v, если (версия 12) обновит его!
  2. nvm устанавливает v14.8.0 (что-то вроде этого или leates)
  3. nvm использует версию v14.8.0 (или любую другую версию, которую вы, возможно, захотите установить, выше 12)

надеюсь, это поможет

Ответ №3:

Сообщение об ошибке на терминале У меня была та же ошибка, но я смог ее исправить, импортировав «@testing-library/jest-dom » в мой тестовый файл следующим образом:

 import '@testing-library/jest-dom'
 

Оказалось, что приведенный выше пакет является peerDependency для «@testing-library/react». Отсюда и Ошибка.

Если вы сочтете это полезным, поставьте лайк, чтобы другие разработчики могли извлечь выгоду.

После исправления, исправьте ошибку err0r следующим образом

Результат: Испытание пройдено

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

1. Пожалуйста, скопируйте и вставьте код в ответ в виде текста вместо изображений.