Библиотека тестирования React - «messageParent» можно использовать только внутри воркера.

Я тестирую компонент реакции с помощью 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);
  });
});

Любая помощь в этом будет принята с благодарностью.

4 ответа

Решение

У меня была такая же проблема, и это было вызвано звонком toBe() или toEqual()на HTMLElement. Итак, ваш наиболее вероятный виновник здесь, поскольку getByTestId возвращает HTMLElement:

expect(getByTestId('dateRange')).toBe(dateRange);

Я исправил свою проблему, протестировав вместо этого текстовое содержимое элемента.

expect(getByTestId('dateRange')).toHaveTextContent('...');

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

      import '@testing-library/jest-dom'

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

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

После исправления

Результат:

Привет, у меня была такая же проблема после того, как я потратил некоторое время на поиски в Google, я нашел это: форум проблем github

Оказалось, что эта проблема вызвана версией node12, которую я понизил до версии 10, и все сработало, я также обновился до версии 14, и это тоже работает.

проверьте, какая у вас версия узла в терминале ur:

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

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

Я столкнулся с этой ошибкой во время тестирования, чтобы увидеть, <select>было правильное количество вариантов при использовании этого:

      expect(container.querySelectorAll('option')).toBe(2);

@testing-library/react, должно быть, пытается сделать что-то странное, чтобы получить длину коллекции HTML, как у меня. Поэтому я добавил .lengthна запрос:

      expect(container.querySelectorAll('option').length).toBe(2);

Все было хорошо.

Другие вопросы по тегам