@react_js

Страница 2734 из 5115
Eugene Y.
07.12.2017
21:26:38
Я все сломал(

Теперь не билдится

Stepan
07.12.2017
21:26:58
Попробуй с ним, хоть разберёшься, как там всё работает

Dmitry
07.12.2017
21:27:59
Доброй ночи

Google
Dmitry
07.12.2017
21:28:08
Посоветуйте react+redux проект, покрытый юнит тестами

Хочу сорцы почитать, посмотреть как тестят

То что в оф. доке - https://redux.js.org/docs/recipes/WritingTests.html#reducers - совсем вырожденный и простой случай

Вообще сложилось впечатление что на реакт-стеке максимум интеграционные тесты (по желанию со скриншотами) можно писать

Слишком много мокать надо для юнит-тестов

Сергей
07.12.2017
21:39:22
ну для редюсеров совсем немного, но да, моки нужны без юнит тестов жить совсем больно интеграционные проверяют только юзер-кейсы а сам по себе код нет хоть там 100К ошибок будет в консоли и производительность низкая

Dmitry
07.12.2017
21:49:59
Хорошо, положим я тестирую отдельный редьюсер - на входе i кусочков стейта “до”, k экшенов и j наборов payload для этих экшенов. Прогонов будет i*j*k, на выходе кусочек стейта “после”. Его надо проверить. Как? Варианты: 1 Нагенерить i*j*k кол-во вариантов стейта и тупо сверить 2 Написать просто валидатор на откровенную лажу. Саму логику не проверяем 3 Еще какие? …

Вариант с дублированием логики редьюсера в юнит-тесте кажется совсем бессмысленным

Winni
07.12.2017
21:58:44
jest?

Сергей
07.12.2017
21:58:49
https://developers.google.com/web/updates/2017/10/devtools-release-notes#workspaces

Dmitry
07.12.2017
21:59:21
Это инструмент. Хороший. Меня сам подход интересует. И практические примеры, чуть посложнее тестирования TODO List

Winni
07.12.2017
21:59:40
it('should return correct range', () => { expect( reducer({statebefore}) ).toEqual( {stateAfter} ) });

Dmitry
07.12.2017
21:59:57
В доке стейт из трех полей и два экшена без параметров.

Google
Dmitry
07.12.2017
22:01:25
‘should return correct value' тогда уж. Не вижу тут range

Либо делать родительский тест который весь range в цикле проверит

Используя нагенеренные куски стейта

Пишу тест, нагенерил сотню тысяч этих stateAfter на все случаи жизни, закоммитил. Чуть-чуть изменилась логика или вообще рефакторинг имен полей. Тест переписал, перегенерил заново эту сотню тысяч stateAfter, закоммитил. ???

Так что-ли

Stepan
07.12.2017
22:10:00
Так что-ли
что ли*

Dmitry
07.12.2017
22:13:29
что ли*
да, спасибо

Sergey
07.12.2017
22:43:27
Я на каждый тест с начала прогоняю экшены через рюдесер что бы добиться того стейта на который собственно и пишу тест. Но у меня экшенов всего десятка полтора.

Dmitry
07.12.2017
22:51:05
А payload у этих экшенов какой? Если прогонять их как юзер (нажимать кнопки, вводить текст и иная другая input-реакция), то на результат влияют и компоненты, к которым привязан action creator. Изменился компонент -> в AC может попасть неоттестированное значение -> непокрытый тестами кейс

У “прогоночных” экшенов имеется в виду

Sergey
07.12.2017
22:54:22
У меня такого не может быть. То с чем работает пользователь напрямую зависит от стейта.

Но там и возможностей у пользователя сильно меньше. Нет форм (вернее одна всё-таки есть) нет мышки и всего 20 кнопок на «клавиатуре»

Dmitry
07.12.2017
22:56:17
Все же у тебя наверное больше интеграционный тест получается, а не юнит

Связка стор-компонент-AC-редьюсер

Admin
ERROR: S client not available

Sergey
07.12.2017
22:57:06
Экшн - редюсер - селектор

Дмитрий
07.12.2017
22:58:27
Отец, сын и святой дух

Sergey
07.12.2017
22:58:39
))

Дмитрий
07.12.2017
23:01:25
Если вебпак неправильно транспилирует в продакшн режиме мои компоненты-генераторы, то это к психиатрам, да?

Sergey
07.12.2017
23:03:00
У меня недавно было что-то подобное. Дев сборка работает. Продакшн сборка роняет хром.

Google
Sergey
07.12.2017
23:04:05
Причём если в продакшн сборке поставить брейкпоинт в том месте где все падает. То оно не падает.

Бился до трёх утра. Потом забил и лёг спать. На утро само рассосалось.

До сих пор мучает меня вопрос - не приснилось ли мне это все.

Stepan
07.12.2017
23:05:35
Это был ночной кошмар

Dmitry
07.12.2017
23:05:58
Просто выключаешь плагины по одному в конфиге вебпака и ищешь кто виноват

Дмитрий
07.12.2017
23:06:58
Это те самые?)
Те самые ломают бабель в другом месте ?А это я просто решил воспользоваться итераторами по назначению))

То есть для реакта реально нормально иметь в children function* IterableComp() { yield <A/> yield <B/> }

Sergey
07.12.2017
23:08:48
Dmitry
07.12.2017
23:09:07
У меня были случаи когда я находил свой issue в числе закрытых на гитхабе плагина. Т.е. официально все должно было работать, а те кто раньше жаловался - их поиском не было видно

Страница 2734 из 5115