Size: a a a

2019 August 04

AR

Alexey Raspopov in React Kyiv
(спешу заметить что в примерах мокаются не хуки Реакта)
источник

DB

Dima Bildin in React Kyiv
Потому что то что в хуках – часть логики компонента. Хук обновился, мок нет. Тест зелёный, а компонент не работает
источник

AR

Alexey Raspopov in React Kyiv
То что в хуках — логика хука) По твоим словам моки это вообще плохая практика
источник

AR

Alexey Raspopov in React Kyiv
Если у хука поменялась сигнатура — это другое дело. Но такую проблему можно придумать для любых юнит тестов. И компоненты и хуки это всего лишь функции
источник

DB

Dima Bildin in React Kyiv
> моки это вообще плохая практика

в общем случае, их лучше делать меньше, чем больше.

> То что в хуках — логика хука) По твоим словам

Ну "по твоим словам" можно замокать любые функции, которые внутри компонента используются, ведь это их логика, что останется 🙂
источник

DB

Dima Bildin in React Kyiv
В любом случае, я сказал, что практика спорная, а не "ни в коем случае так делать не стоит")
источник

AR

Alexey Raspopov in React Kyiv
> Ну "по твоим словам" можно замокать любые функции, которые внутри компонента используются, ведь это их логика, что останется

Так работает юнит тестирование. Модуль А использует модуль Б. Я тестирую модуль А, значит мне нужен полный контроль над модулем Б. Я мокаю модуль Б, чтобы 1) не было сайд эффектов 2) чтобы программно переводить его в нужные для тестов модуля А состояния. Так это работает для юнит тестирования любых форм кода
источник

DB

Dima Bildin in React Kyiv
Не уверен, зачем нужен полный контроль над модулем Б. Когда-то тут уже приводил этот пример. Есть функция
import {add2, add3} from 'useful-lib';

function add5(a) {
 return add3(add2(a));
}


Я ожидаю, что функия add5(3) вернёт 8, в тестах предложите мокать add2 и add3? Тогда тест функции add5 станет бесполезным, так как внутри всё замокано.
Потом я перепишу add3 на a => a + 7, но он останется замоканым в тесте функции add5, тест будет зелёным, а по факту add5(3) будет возвращать 12
источник

DB

Dima Bildin in React Kyiv
Потому что add3 и add2 – это детали реализации функции add5
источник

DB

Dima Bildin in React Kyiv
Так же, как и хук для компонента, который просто функция.
источник

DB

Dima Bildin in React Kyiv
По поводу сайд-эффектов, как правило у компонента есть ожидаемые сайд-эффекты, которые мы в тесте тоже хотим протестировать
источник

AR

Alexey Raspopov in React Kyiv
Могу я тебя попросить придумать пример получше?
источник

AR

Alexey Raspopov in React Kyiv
Если тебе нужно чтобы тесты реагировали изменения в композиции модулей — это называется интеграционное тестирование
источник

DB

Dima Bildin in React Kyiv
🙂 спроси 10 девелоперов определения и границы между юнит-тестированием, интеграционным и e2e, получишь 10 разных ответов
источник

DB

Dima Bildin in React Kyiv
Считается, что юнит-тестов должно быть намного больше, чем интеграционных, потому что их быстрей писать и они точней показывают, где проблема, если что-то накосячилось. В случае, где реализация мокается, есть шанс, что юнит-тест ничего не подскажет
источник

DZ

Dmitry Zherebko in React Kyiv
Alexey Raspopov
То что в хуках — логика хука) По твоим словам моки это вообще плохая практика
этот чел примерно такое и говорит http://kentcdodds.com )
источник

DZ

Dmitry Zherebko in React Kyiv
источник
2019 August 05

LK

Leonid Kuznetsov in React Kyiv
Ребят а не у кого не завалялось тулзы или либки для подписывания экшенов в стиле Flux аля (SUCCESS, FAILED, ERROR, FETCH). Может есть более изящные решения?
источник

DB

Dima Bildin in React Kyiv
Leonid Kuznetsov
Ребят а не у кого не завалялось тулзы или либки для подписывания экшенов в стиле Flux аля (SUCCESS, FAILED, ERROR, FETCH). Может есть более изящные решения?
что такое подписывание экшенов?
источник

LK

Leonid Kuznetsov in React Kyiv
Dima Bildin
что такое подписывание экшенов?
впринципе уже разобрались, есть пару идей. Ну это аля у тебя есть функа которая создает экшен в асинхронном стиле и добовляет _FETCH, _SUCCESS, _ERROR
источник