Jest + энзим: TypeError: Невозможно прочитать свойство 'htmlparser2' неопределенного

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

Это тест

import React from 'react';
import { shallow, render } from 'enzyme';

import Title from './../';

describe('Title', () => {
  it('should render correctly', () => {
    const TitleDOM = render(<Title />);
    expect(TitleDOM).toBeDefined();
  });
});

Это ошибка введите описание изображения здесь

Версии:
"реагировать": "^ 16.0.0",
"шутка": "^ 21.2.1",
"энзим": "^3.2.0"

Я ценю, если кто-то может мне помочь.

1 ответ

У меня была похожая проблема с электронными нативными компонентами, и для меня работало решение изолировать эти компоненты в отдельный файл.

Вы можете просто отделить использование htmlparser2 к функции вне компонента в вспомогательном файле.

Сегодня я сам задал этот вопрос, оказывается cheerio (зависимость enzyme) внесли критические изменения в свои 1.x версия и enzyme не может правильно закрепить версию, чтобы избежать этого.

Вы можете увидеть связанные с этим проблемы с чирио здесь:

По сути, они по умолчанию отходят от htmlparser2, но есть способ продолжить его использование.

Я открыл enzyme проблема по этому поводу здесь (какие подробности, где вы можете внести необходимые изменения в фермент, если необходимо):

А пока можно было бы заставить cheerioразрешение версии в вашем package.json, что можно сделать, добавив resolutions запись, подобная следующей:

{
  // ..snip: other package.json things..
  "dependencies": {
    "enzyme": "^3.9.0",
    // ..snip: all of your other dependencies..
  },
  "resolutions": {
    "cheerio": ">= 0.22.0 < 1.0.0"
  }
}

Это похоже на yarn специфическая функция, о которой вы можете узнать больше по адресу:

Если вы используете npm, похоже, существует эквивалентный пакет под названием npm-force-resolutions (правда, лично я не использовал):

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