Size: a a a

2019 September 19

O

Oleksander in React Kyiv
источник

a

aaa in React Kyiv
как лучше фильтровать поля таблицы по чекбоксам в дропдауне ?
источник

G

GNU/Vsevolod.rs in React Kyiv
aaa
как лучше фильтровать поля таблицы по чекбоксам в дропдауне ?
fields.filter(f => dropDown.includes(f))?
источник

a

aaa in React Kyiv
Ща попробую
источник

VS

Vladimir Shaposhnikov in React Kyiv
Всем привет, нужен совет.

Есть проект, с огромным кол-вом кода, компонентов.
Взаимодействие внутри осуществляется по средству Context API, useReducer и тд. Соответсвенно апп обернут в AppContext.
Задача стоит максимально "вредные" места в проекте, покрыть тестами. Иду от малого к большому.
Средства тестирвания: Jest, Enzyme
Есть компонент Field который в тесте не хочет маунтится c помощью shellow метода, а с использованием mount просит быть обернутым в форму, у которой к слову свой контекст.
На сейчас вышел из ситуации следующим образом - вынес в хелеперы "обертки" - (Апп контекст, Форму) компонента Field для корректного рендеринга и в тесте дергаю так - const wrapper = mount(getAppContextWrapper(getFormContextWrapper(<Field { ...props } />)));
Но когда к примеру нужно проверить корректный сеттинг пропса в тесте, это переходит в некую утопию аля - wrapper.props().children.props.children.props.... и тд.

Вопрос.

Как правильно мокнуть контекст в такой ситуации, ибо тестируется один компонент а пробираться к нему получается только через дебри. Направьте куда копать, перелопатил кучу инфы, решения не нашел.

Буду благодарен за любой совет.
источник

B

Bogdan in React Kyiv
Vladimir Shaposhnikov
Всем привет, нужен совет.

Есть проект, с огромным кол-вом кода, компонентов.
Взаимодействие внутри осуществляется по средству Context API, useReducer и тд. Соответсвенно апп обернут в AppContext.
Задача стоит максимально "вредные" места в проекте, покрыть тестами. Иду от малого к большому.
Средства тестирвания: Jest, Enzyme
Есть компонент Field который в тесте не хочет маунтится c помощью shellow метода, а с использованием mount просит быть обернутым в форму, у которой к слову свой контекст.
На сейчас вышел из ситуации следующим образом - вынес в хелеперы "обертки" - (Апп контекст, Форму) компонента Field для корректного рендеринга и в тесте дергаю так - const wrapper = mount(getAppContextWrapper(getFormContextWrapper(<Field { ...props } />)));
Но когда к примеру нужно проверить корректный сеттинг пропса в тесте, это переходит в некую утопию аля - wrapper.props().children.props.children.props.... и тд.

Вопрос.

Как правильно мокнуть контекст в такой ситуации, ибо тестируется один компонент а пробираться к нему получается только через дебри. Направьте куда копать, перелопатил кучу инфы, решения не нашел.

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

VS

Vladimir Shaposhnikov in React Kyiv
Bogdan
есть же find, которым можно найти сразу нужный компонент
да, есть, но на нем не вызовешь заветный setProps
источник

B

Bogdan in React Kyiv
find(Field)
источник

VS

Vladimir Shaposhnikov in React Kyiv
только на root е его можно дернуть
источник

B

Bogdan in React Kyiv
почему нельзя
источник

VS

Vladimir Shaposhnikov in React Kyiv
потому что так работает enzyme
источник

B

Bogdan in React Kyiv
а зачем делать сетпропс, если ты и так прямо пропсы передаешь
источник

VS

Vladimir Shaposhnikov in React Kyiv
Что бы проверить флоу их динамического применения
источник

VS

Vladimir Shaposhnikov in React Kyiv
Те которые передаю, они же только при маунте прокинулись и все.
источник

B

Bogdan in React Kyiv
ну получается надо заводить стейт сверху и его прокидывать кпк пропсы
источник

VS

Vladimir Shaposhnikov in React Kyiv
ну выходит что да
источник

VS

Vladimir Shaposhnikov in React Kyiv
но я думал есть какое-то более глобальное решение что бы не тягать постоянно с собой родителей - контекст обертки
источник

VS

Vladimir Shaposhnikov in React Kyiv
с тестами в таком глобальном формате у меня не особо много опыта, не хочу говнокодить, поэтому и сомневаюсь
источник

VS

Vladimir Shaposhnikov in React Kyiv
Норм ли это в каждом тесте для контекст-зависимого компонента дергать таким образом -     const wrapper = mount(getAppContextWrapper(getFormContextWrapper(<Field { ...props } />)));
источник

VS

Vladimir Shaposhnikov in React Kyiv
не зашквар ли это
источник