Size: a a a

React — русскоговорящее сообщество

2021 March 03

VK

Vladimir Klimov in React — русскоговорящее сообщество
Vitaliy Ponomarev
так это уже интеграционный тест и есть, если api мокать. в этом случае мне проще сам хук без UI тестировать
Это никак не гарантирует, что он работает хорошо в компонентах же
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Vitaliy Ponomarev
так это уже интеграционный тест и есть, если api мокать. в этом случае мне проще сам хук без UI тестировать
если хук - самостоятельная реиспользуемая единица, можно его в изоляции тестировать
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
я не зря там статью выше скинул Кента. интеграционные тесты дают наибольшее соотношение профит/затраты
источник

VP

Vitaliy Ponomarev in React — русскоговорящее сообщество
Vladimir Klimov
Компонент - это черный ящик, это и есть ваш модуль для юнит тестирования, то, что он использует какие-то хуки - его дело
с каких пор?
компонент - это верстка, не более. Захочу - могу то же самое хоть в консоли делать, но функциональность должна быть +/- та же (я не про кнопконажимание сейчас)
источник

VK

Vladimir Klimov in React — русскоговорящее сообщество
Vitaliy Ponomarev
с каких пор?
компонент - это верстка, не более. Захочу - могу то же самое хоть в консоли делать, но функциональность должна быть +/- та же (я не про кнопконажимание сейчас)
Не согласен, что компонент - это "просто верстка"
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Vitaliy Ponomarev
с каких пор?
компонент - это верстка, не более. Захочу - могу то же самое хоть в консоли делать, но функциональность должна быть +/- та же (я не про кнопконажимание сейчас)
если ты делишь компоненты на "логику" и "верстку", то ничто не мешает тебе делать два компонента: один с хуками, который передает пропы в "тупой"

но так никто не делает, потому что это того просто не стоит, легче тестануть весь компонент в сборе и не заебываться по мелочам
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
надо просто смириться с тем, что в мире реакта нет нормального DI и жить с этим
источник

VK

Vladimir Klimov in React — русскоговорящее сообщество
Roman Usherenko
если ты делишь компоненты на "логику" и "верстку", то ничто не мешает тебе делать два компонента: один с хуками, который передает пропы в "тупой"

но так никто не делает, потому что это того просто не стоит, легче тестануть весь компонент в сборе и не заебываться по мелочам
И всё-равно логичнее будет делать уже интеграционный тест из этих двух компонентов потому, что по отдельности они не имеют смысла😁
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
Vladimir Klimov
И всё-равно логичнее будет делать уже интеграционный тест из этих двух компонентов потому, что по отдельности они не имеют смысла😁
не ну чо, версточный компонент можно покрыть вдоль и поперек вариациями пропов
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
просто это мало что улучшит в плане выгодности тестов
источник

VK

Vladimir Klimov in React — русскоговорящее сообщество
Roman Usherenko
просто это мало что улучшит в плане выгодности тестов
Ну, я об этом
источник

RU

Roman Usherenko in React — русскоговорящее сообщество
у нас блин есть один кадр в проекте: каждый файл у него имеет свой тест файл, миллиард тестов, где все вокруг мокано-перемокано (селекторы, диспачи), а интеграционных тестов нет

в результате тесты тестят хуйню, потому что они неправильно засетаплены, но это не видно, потому что все замокано
источник

💾K

💾 M.S K. in React — русскоговорящее сообщество
Народ, подскажите в чем проблема - не срабатывает addToFavorites - не копирует объект велью в selectedList на 54й строке https://codesandbox.io/s/tz-04-react-redux-saga-autocomplete-material-ui-fg65x?file=/src/components/Autocomplete/index.js:1439-1451
источник

VP

Vitaliy Ponomarev in React — русскоговорящее сообщество
Vladimir Klimov
И всё-равно логичнее будет делать уже интеграционный тест из этих двух компонентов потому, что по отдельности они не имеют смысла😁
ну например, я могу переписать ту же форму в виде ввода-вывода в терминал, на каком-нибудь ink , но формой она от этого быть не перестанет, со своей же логикой и api.
источник

VK

Vladimir Klimov in React — русскоговорящее сообщество
Vitaliy Ponomarev
ну например, я могу переписать ту же форму в виде ввода-вывода в терминал, на каком-нибудь ink , но формой она от этого быть не перестанет, со своей же логикой и api.
Я не понял как это связано с тем, что компонент - юнит, внутрь которого не надо лезть
Если вы это будете делать и полагаться при тестировании на внутреннюю реализацию - вам придется менять тесты каждый раз, когда поменялась эта реализация, а не внешнее апи компонента
источник

VP

Vitaliy Ponomarev in React — русскоговорящее сообщество
Vladimir Klimov
Я не понял как это связано с тем, что компонент - юнит, внутрь которого не надо лезть
Если вы это будете делать и полагаться при тестировании на внутреннюю реализацию - вам придется менять тесты каждый раз, когда поменялась эта реализация, а не внешнее апи компонента
вот вопрос как раз в том - как при таких условиях должен быть организован компонент на хуках?

чтобы не дублировать логику (переиспользовать её) и тестировать все необходимые состояния?

т.е. очевидно будет что-то про api (отдельный хук), что-то про внешний вид самого компонента (в props или state)
источник

VK

Vladimir Klimov in React — русскоговорящее сообщество
Vitaliy Ponomarev
вот вопрос как раз в том - как при таких условиях должен быть организован компонент на хуках?

чтобы не дублировать логику (переиспользовать её) и тестировать все необходимые состояния?

т.е. очевидно будет что-то про api (отдельный хук), что-то про внешний вид самого компонента (в props или state)
Вы не должны полагаться на то, что компонент использует конкретный хук, на мой взгляд
Это деталь его внутренней реализации
источник

VP

Vitaliy Ponomarev in React — русскоговорящее сообщество
Vladimir Klimov
Вы не должны полагаться на то, что компонент использует конкретный хук, на мой взгляд
Это деталь его внутренней реализации
> Это деталь его внутренней реализации

вот у меня этот пункт до сих пор вызывает сомнения. логика сайд-эффекта, который ходит в api - деталь реализации кнопки submit?
источник

VK

Vladimir Klimov in React — русскоговорящее сообщество
Vitaliy Ponomarev
> Это деталь его внутренней реализации

вот у меня этот пункт до сих пор вызывает сомнения. логика сайд-эффекта, который ходит в api - деталь реализации кнопки submit?
Кнопка же не ходит в апи)
источник

VK

Vladimir Klimov in React — русскоговорящее сообщество
Vitaliy Ponomarev
> Это деталь его внутренней реализации

вот у меня этот пункт до сих пор вызывает сомнения. логика сайд-эффекта, который ходит в api - деталь реализации кнопки submit?
Деталь - это то, как именно происходит сабмит, грубо говоря
источник