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
(правда, лично я не использовал):