Size: a a a

React: русскоязычное сообщество

2020 August 20

NG

Nube Gris in React: русскоязычное сообщество
Лады
источник

NG

Nube Gris in React: русскоязычное сообщество
function mockReduxHooks() {
 const values = new WeakMap();
 const mockDispatch = jest.fn();
 useDispatch.mockReturnValue(mockDispatch);

 useSelector.mockImplementation((selector: Function) => values.get(selector));

 const result =  {
   mockSelector<T, S, C>(selector: OutputSelector<S, T, (s: C)=>T>, value: T) {
     values.set(selector, value);
     return result;
   },
   mockDispatch,
 };

 return result;
}

Как-то так накидал
источник

NG

Nube Gris in React: русскоязычное сообщество
mockReduxHooks().mockSelector(getFilter, initialInputValue);
источник

NG

Nube Gris in React: русскоязычное сообщество
Weakmap в тестах-почему бы и нет
источник
2020 August 21

i4

ichi 404 in React: русскоязычное сообщество
Юра Чеботаев
В общем, как я понимаю, два варианта: или мокать диспатч или проверять стор.
Можно например разделить на глупые/умные(привет, контейнеры) компоненты. В глупых тестить, работают ли колбеки, в умных коннектить стор к колбекам, тестить в юнитах глупые и стор, в интегрейшенах - умные
источник

i4

ichi 404 in React: русскоязычное сообщество
У Nube Gris смешаны ответственности и невозможно ничего протестить
источник

i4

ichi 404 in React: русскоязычное сообщество
То что компоненты не должны знать про стор это он правильно подметил
источник

i4

ichi 404 in React: русскоязычное сообщество
Иначе выходит, что мы тестим кнопки и редукс, вместо своего кода
источник

К

Куземяка in React: русскоязычное сообщество
есть массив данных, рендерится на  страницу.
есть 3 селекта (html) - надо сделать так, чтобы при выборе знаения из каждого селекта, фильтровался исходный массив.
причем надо, чтобы селекты накладывались друг на друга - ну типа логические "И"
событие он чейндж селекта обрабатываю, массив могу отфильтровать, но как в кучу собрать все 3 селекта - не понимаю. Если есть мысли буду благодарен и выслушаю.
источник

i4

ichi 404 in React: русскоязычное сообщество
Куземяка
есть массив данных, рендерится на  страницу.
есть 3 селекта (html) - надо сделать так, чтобы при выборе знаения из каждого селекта, фильтровался исходный массив.
причем надо, чтобы селекты накладывались друг на друга - ну типа логические "И"
событие он чейндж селекта обрабатываю, массив могу отфильтровать, но как в кучу собрать все 3 селекта - не понимаю. Если есть мысли буду благодарен и выслушаю.
data.filter(f1).filter(f2).filter(f3)
источник

К

Куземяка in React: русскоязычное сообщество
ichi 404
data.filter(f1).filter(f2).filter(f3)
примерно так и думаю
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
ichi 404
Можно например разделить на глупые/умные(привет, контейнеры) компоненты. В глупых тестить, работают ли колбеки, в умных коннектить стор к колбекам, тестить в юнитах глупые и стор, в интегрейшенах - умные
Так-то да. Согласен.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
С хуками получается такая проблема, что единственное как туда можно подлезть — это замокать стор.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
Я думаю, что экшены можно не тестить в рамках теста компонента.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
То что экшены и редьюсеры потещены отдельно — этого достаточно.
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
А что тестить внутри компонента — это разметку и реакцию на клики.
источник

i4

ichi 404 in React: русскоязычное сообщество
Юра Чеботаев
С хуками получается такая проблема, что единственное как туда можно подлезть — это замокать стор.
В одном из проектов (на хуках) я заметил и теперь активно пропогандирую компоненты и контейнеры с разделением на логику вьюшки/компонента и бизнес логику.
источник

i4

ichi 404 in React: русскоязычное сообщество
Внешние хуки делаются в контейнере
источник

i4

ichi 404 in React: русскоязычное сообщество
И компонент отлично тестится без внешних зависимостей
источник

ЮЧ

Юра Чеботаев... in React: русскоязычное сообщество
ichi 404
В одном из проектов (на хуках) я заметил и теперь активно пропогандирую компоненты и контейнеры с разделением на логику вьюшки/компонента и бизнес логику.
Это вполне оправдано, но на самом деле сейчас любой уважающий себя заказчик сразу делает дизайн-систему и «полный фарш».
источник