У меня есть HOC, который отображает завернутый компонент только тогда, когда isEntityValid() имеет значение true:
export default WrappedComponent => {
return class EntityConsumer extends Component {
render() {
return isEntityValid() && <WrappedComponent {...this.props} />;
}
};
};
оператор export default моего обернутого компонента выглядит так:
export default withEnity(SomeComponent);
SomeComponent были написаны модульные тестовые примеры, прежде чем я добавил withEnity HOC,
const wrapper = shallow(<SomeComponent {...props} />);
const doneButton = wrapper.find(".footer_button");
как мне настроить тест, чтобы они все равно проходили?:
@estus Я хочу поиздеваться над Enity и протестировать один и тот же компонент отдельно, можете ли вы показать мне, как это сделать?
Они в разных модулях, не так ли? Затем jestjs.io/docs/en/manual-mocks.html
Они не находятся в разных модулях.
Тогда вы не сможете над ним издеваться. Как я уже сказал, способ его тестирования зависит от того, что такое isEntityValid.
@estus Что, если isEnityValid является вспомогательной функцией в другом файле в моей файловой структуре?
Тогда вы, вероятно, захотите издеваться над ним, чтобы сделать модульный тест более изолированным.





Вот как я обычно делаю свои собственные hocs:
export default WrappedComponent => {
class EntityConsumer extends Component {
render() {
return isEntityValid() && <WrappedComponent {...this.props} />;
}
};
EntityConsumer.WrappedComponent = WrappedComponent;
return EntityConsumer;
};
Затем позже на тесте вы можете
const wrapper = shallow(<SomeComponent.WrappedComponent {...props} />);
const doneButton = wrapper.find(".footer_button");
Вы также можете экспортировать развернутый компонент
export default withEnity(SomeComponent);
export { SomeComponent as PureSomeComponent };
А затем протестируйте его в развернутом виде
Import { PureSomeComponent as SomeComponent};
Зависит от того, что такое EntityValid. Вы можете либо протестировать обернутый компонент, либо имитировать withEnity и протестировать компонент и withEnity отдельно.