Saga?
Thunk на промисах, Saga на функциях-генераторах.
Да в общем в принципе работы. сага это по сути описание для движка саг последовательности действий в декларативном виде. в саге есть проблемы с типизацией и чрезмерная многословность тестов (тут есть очень разные мнения на этот счет). Санки по сути это асинхронные функции, которые в том же виде и выполняются. Просто, дешево, надежно)) Ну у саг есть некоторые фишки за которые их любят, но это как я понял очень специфические вещи и в большинстве случаев не нужны.
Саги тестировать легко.
Да я не говорил, что тяжело. Ту просто например Иван писал, что по его мнению, тесты получаются слишком избыточными для саг. Поэтому я и написал что есть разные мнения на этот счет.
Согласен, все от привычек зависит.
Кек
What is the kek?
Почитай, например, вот эту статью. А потом переложи на саги https://blog.kamyshev.me/effestor-tests/
Если честно, меня от эффектора укачивает)
Абстрагируйся. Читай про тесты, а не про эффектор
Вообще я слышал, что это хорошая штука, но только для тех кто в него врубился))
ну как? получилось?
ну как, получилось?
Насчет саг? Проблем с тестированием не было. Насчёт эффектора - не мое.
почитать про тесты https://t.me/react_js/1267349
Почитал. Узнал ли что-то новое? Ну хз, вроде, так и работал до этого.
и саги так же тестируешь? dipatch(login()) expect(select(userCurrency)).toBe('usd') или по шагам раскручиваешь сагу ради раскручивания саги?
Саги же низкоуровневые, тестируй хоть каждую итерацию генераторов. Если это действительно нужно.
Смотря что считать за норм. У меня не было необходимости тестировать каждый чих - бизнес не поймет. Я просто изучил и пошел дальше.
Ну ты же тесты пишешь? Вот юзерфлоу: «когда юзер залогинился, произошёл запрос за его id, потом с этим id произошёл запрос за его балансом и баланс лёг в стор». Как мне протестить «кого юзер залогинился, его баланс лёг в стор»?
Проверить стор. Да, пробежаться по генераторам
Вот в статье, что ты прочитал, описан нормальный тест. Примерно такой я описал в сообщении выше
Описать каждый шаг исполнения генератора, да? Как я и писал выше — нормальный тест не получится
А какой получится?
Пошаговое исполнение каждой итерации генератора. Это выворачивание имплементации наружу и тестирование имплементации, а не поведения
Написал ты тест, объяснил генератору, что ему нужно делать. Потом задача упростилась — юзер сразу после логина может получить баланс. Тест сломался, хотя поведение не изменилось. Очевидно, что каждый раз при изменении имплементации тебе нужно переписывать тест в очевидных местах.
Ты хочешь сказать, в той статье я просмотрел панацею от болезни "ломающихся тестов"?
нет, в той статье просто приведены примеры нормальных тестов "юзер залогинился, его баланс подтянулся" вместо "юзер залогинился, он хочет сделать запрос за id, мы дадим ему id, он хочет сделать запрос за балансом, мы дадим ему баланс, вот теперь баланс подтянулся"
Ок. Остаётся вопрос в том, как долго будешь искать причину в обоих случаях, почему баланса нет на месте и насколько детально удастся найти быстро.
ты не подумай, что я просто набрасываю. я тоже был в восторге от тестов с сагами. пока писал их. а потом я их переписывал. потом снова переписывал. потом снова переписывал. потом они ломались из-за того, что я строки в саге местами поменял. потом они ломались, потому что в одном юните было 35 строк и они сливались в неподдерживаемую кашу саги прикольные, это да. только тесты – это их слабая сторона, а не сильная этот твой "контроль" – херня, в которой ты по шагам объясняешь коду, что нужно сделать на каждом шаге. это не тест, это дважды написанный один и тот же код
Отказался от саг в итоге?
сначала от тестов на саги, потом от саг
В пользу санок?
в пользу реатома
Епт.. даже не слышал про такое) в чем преимущество кроме тестов?
реатом – это редакс без хуйни
Обсуждают сегодня