Dmitry
а чего бы не доверять записи в сторадж? тогда и надопроверять что цикл проитерирывает до конца и иф переходит куда нужно
к примеру ты юзаешь какую то бд из нее делаешь обьект с методами методы нужно протестить Как ты им будешь доверять ?
Aidyno
Что тебе возвращает index%2 ?)
Евгений
Что тебе возвращает index%2 ?)
Четное или нечётное значение
Dmitry
так я и спрашиваю где граница доверия? с чего б не доверять бд?
я не понимаю тебя ты можешь ей доверять тогда не пиши тесты на свой стораж вдруг он не сохранит или метод с ошибкой написан
Dmitry
function createStorage(db) { return { update() {} } } ты уверен что update работает правильно ? А если не ты писал ?
Aidyno
Четное или нечётное значение
не, он возвращает либо 0 или 1. 0 в js false
Ivan
к примеру ты юзаешь какую то бд из нее делаешь обьект с методами методы нужно протестить Как ты им будешь доверять ?
методы тестируются отдельно ты можешь заметить на моём скриншоте функцию fetchUser — она возвращает промис, тесты на неё написаны рядом с её импелементацией на скриншоте мне достаточно удостовериться, что функция fetchUser будет вызвана с теми аргументами, значения которых я получил на прошлом шаге при обращении к localStorage в тесте я не вызываю fetchUser, а значит и мокать её не нужно
Anonymous
т и п и з а ц и я
Dmitry
всмысле вдруг? вдруг в жс движке баг. тоже будешь проверять?
лол что ? Причем типизация ? твой товарищ написал обертку над какой то либой ты ей доверяешь ? Ну вернет он стабы или пустой промис типы тебе чем помогут ?
Ivan
ты же говоришь что не мокая кто мок сделал. ?
МОКИ НЕ НУЖНЫ ПРИ ТЕСТИРОВАНИИ САГ я мокаю при тестировании транспорта, отчего бы не мокать там только это тесты других модулей в других директориях
Евгений
не, он возвращает либо 0 или 1. 0 в js false
Ну да всё верно, а тернарник уже определяет что подставить. Эта конструкция отлично работает для inline CSS style, но при попытке подчистить это дерьмо, нарвался на нерабочее решение. Погугли, вроде норм. Вот и решил запилить сюда, но видимо бестолку.
Ivan
так что ты тестишь при тесте саг ? Хули толку. от такого теста ?
последовательность действий, валидации, соответствие структур данных друг другу
Ivan
как ты убедился что эта функция вызвана с теми аргументами ? Ты же не вызывал ее
читай так: если с предыдущего шага (получение из localStorage) пришло 42, то следующим шагом будет вызов функции fetchUser с аргументом { userId: 42 } и никто не вызывает эту функцию, я просто проверяю, что если в localstorage лежит user: { id: ‘whatewer’ }, то при запуске саги будет вызвано fetchUser с аргументом { userId: ‘whatewer’ }
Anonymous
Всем привет, я только начал изучать React, можете посоветовать каналы Telegram по React, заранее спасибо.
Anonymous
а этого не хватает?
ну тип по книгам
A.Shersh
Добрый день всем, подскажите какую либу компонентов взять, чтобы иметь возможность стилизовать компоненты?
Влад
ну тип по книгам
https://illustrated.dev/react-vdom
A.Shersh
Как бы в планах взять что-то, на каждый компонент через классы например прокидывать свои стили, и в проекте юзать уже эти компоненты, на сколько это криво будет?
Sergey
https://dev.to/phil/the-best-way-to-test-redux-sagas-4hib
это уже похоже на то, что нужно
Sergey
только не надо записывать сами диспатчи
Sergey
нужно прогонять через тестовый стор с данными и смотреть на стор после саги
Looch
это уже похоже на то, что нужно
ну я их только так и тестиравал, можно и терез стор прогонять а можно просто экгоны записывать
Sergey
это будет настоящее тестирование given: сетап стора в начальное состояни when: запускаем сагу then: чекаем стор
Sergey
перепишешь реализацию саги на другие экшены, но логику оставишь той же — всё, сломаны тесты
Sergey
и толку от таких тестов, тогда
Looch
запись экшенов это почти то же самое, что у господина выше
не совсем,у меня в сагах много вычислений а в стор попадают уже обычно готовые данные и в реьюсерах логики по преоразованию - минимум
Влад
ну тип по книгам
https://ru.reactjs.org/docs/introducing-jsx.html
Влад
https://ru.reactjs.org/docs/dom-elements.html#differences-in-attributes
Влад
https://ru.reactjs.org/docs/rendering-elements.html
Vall
Всем привет Кто делал вместе с формиком валидацию в n-е клво шагов? Может кто примером поделиться, нашел один, хочу посмотреть еще варианты может у кого есть
Sergey
не совсем,у меня в сагах много вычислений а в стор попадают уже обычно готовые данные и в реьюсерах логики по преоразованию - минимум
завязка на реализацию всё равно есть. как минимум на сами экшены. хотя конечно, можно обойтись конвенцией, что саги всегда имеют три экшена
Looch
завязка на реализацию всё равно есть. как минимум на сами экшены. хотя конечно, можно обойтись конвенцией, что саги всегда имеют три экшена
у меня саги очерь редко имеют только 3 экшона и часто запускают еще другие саги,но вообще да в подходе со стейтом - получаем более гибкий тест, не жертвуя его надежностью
Sergey
если тестить в GivenWhenThen подходе то что саги, что санки тестятся одинаково удобно
Sergey
разницы ровно никакой
Макс
Ребята, ни кто не знает частик по preact?
Denis
Ребята, ни кто не знает частик по preact?
попробуй в поиске написать "preact", вдруг что то найдешь
Ryner Reinhardt
Ryner Reinhardt
Можно не иметь два типа?
Ryner Reinhardt
Я имею ввиду если создать CoutnerProps и CounterState, то все очевидно
Ryner Reinhardt
Но зачем вообще отдельный тип под пропсы создавать?
SᑎOᙖOᖇᑎ
нужно при наведении на картинку чтоб появилась кнопка пробую через - в стейте this.styleBtn = {display:'none'} и у кнопки style={this.styleBtn} на изоражение наложил onMouseEnter={e => {this.setState({styleBtn: {position: 'absolute', top: '47px', left: '42px'}})}}
SᑎOᙖOᖇᑎ
но так не работает
Ryner Reinhardt
Это лямбда, зачем там {}?
Yury
но так не работает
1) style={this.state.styleBtn}
Sergey
Но зачем вообще отдельный тип под пропсы создавать?
потому что пропсы и стейт это разные вещи
Sergey
А если нет?
это крайне редкий кейс
Sergey
максимально крайне редкий
Sergey
даже антипаттерн, я бы сказал
Ryner Reinhardt
Я обычно FC использую вообще
Sergey
в котором стейт вообще не описываешь
Ryner Reinhardt
Лучше что-то типа (isMouseOverPicture :: Bool)
SᑎOᙖOᖇᑎ
Ryner Reinhardt
не совсем понял
Лучше иметь булку которая решает нужно показывать кнопку или нет
SᑎOᙖOᖇᑎ
ааа, кстати да, спасибо
Дмитрий
Пытаюсь реализовать простенькое spa. Есть 2 страницы: одна вход, другая вывод видео. Мне нужно при нажатии кнопки вход на первой странице, отрисовать вторую. Правильная ли мысль? Создаю общий класс, там в state создаю индикатор кнопки checkButton: false. И по условию, если он false, то вывожу первую страницу, а если true, то вторую. Ну и на первой странице делаю кнопку "вход", при нажатии на которую будет переключаться checkButton: true, а на второй делаю кнопку выход, при нажатии на которую checkButton: false. Или тут какая-то другая логика ?
Yury
Ведь простенькое твоё не ограничится 2 вьюхами
Дмитрий
Ведь простенькое твоё не ограничится 2 вьюхами
А так правильно? В общем классе должен быть индикатор, который переключается при нажатии на соответствующие кнопки ?
Yury
А так правильно? В общем классе должен быть индикатор, который переключается при нажатии на соответствующие кнопки ?
ну если у тебя это разные страницы без единого общего компонента, то зачем тебе индикатор: просто делаеь на каждой странице ссылку на другую
Oleg K
Всем привет! Подскажите, использовал ли кто нибудь google recaptcha v3 в проектах? И как вообще интегрировали логику с API? Искал, но вот что-то не нашел ничего интересного
Mishka
Всем привет! А подскажите как выполнить функцию в useEffect при инициализации компонента без ререндера ?
Дмитрий
ну если у тебя это разные страницы без единого общего компонента, то зачем тебе индикатор: просто делаеь на каждой странице ссылку на другую
У меня на странице авторизации есть проверка логина/пароля. Получается мне нужно на кнопку при условии, что лог/пас верен привязывать ссылку ?
Oleg
подскажите, какие настройки должны быть в вебпаке/package.json (cra) чтоб работали експорты вида export * from './x'
Mishka
а useEffect разве ререндерит компонент?
если в нем лежит dispatch то скорее всего да (
Oleg
если в нем лежит dispatch то скорее всего да (
я конечно не эксперт, но ререндерит не useEffect, а что-то другое. попробуй memo.