Tutu
Внутринности mainheader и maincontent
Tutu
будем потрошить вместе
Aizada
import React from 'react'; const MainHeader = ()=>{ return ( <header> <div className="Main-logo"> </div> <div className="MainHeadertext"> <h3> Welcome to KSTU </h3> <p> Kyrgyz-State Technical Uiversity named after I.Razakov </p> </div> </header> ); } export default MainHeader;
Aizada
import React from 'react'; const MainContent =()=>{ return( <div className="MainContent"> Content </div> ); } export default MainContent;
Tutu
Все вроде четко
Anonymous
у меня работает только mainfooter
для начала впихни всё в fragment/див обёртку
Tutu
точняк)
Alexander
Ангулярщик как клеймо ))
Как на счёт уважения? И как на счёт каждый инструмент под свою задачу?
Aizada
спасибо
Vyacheslav
Ребят, нужен совет, есть варианты в cra переписать в jest конфиге свойство browser на true без еджекта, я плять просто в шоке, зачем блеть в cra по умолчанию стоит окружение ноды, плес хелп
Vyacheslav
конкретно про твой случай не знаю, но craco умеет менять конфиг жеста
thanks, посмотрим, и мэйби есть чего нить норм для юнит тестов окромя джеста?
Vyacheslav
а тебе какое окружение надо?
здрасте, очевидно что cra 99% использования эт бровзер
Nikolai
https://doc.ebichu.cc/jest/docs/ru/configuration.html#testenvironment-string
Vyacheslav
для тестов?
Если ты не тестируешь функции a + b то с нодой будет достаточно проблем, продвинутые апи в ноде и браузере цепляются и работают по разному
G.
Как думаете, что в фразе "используете библиотеку-коннектор для нашего API" подразумеваться под библиотекой-коннектором?
Vyacheslav
Зачем вам браузерное апи в бизнес логике?
шифрование = браузерное апи + бизнес логика, щас оне момент, кое что чекнем
Nikolai
шифрование = браузерное апи + бизнес логика, щас оне момент, кое что чекнем
Ссылку гляньте, можно аннотацией в комменте окружение менять для любого теста
Vyacheslav
Ссылку гляньте, можно аннотацией в комменте окружение менять для любого теста
Довольно неоднозначные параметры, в чем отличие testEnvironment с параметрами jsdom и node от параметра browser в конфиге с булевым значением testEnvironment по умолчанию jsdom, хотя textEncoder у меня до сих пор не читается(
Anonymous
всем приветули, подскажите, пжл, что я упускаю? export function* sessionSaga() { //logic here yield call(logoutSaga); yield put({ type: CONSTANTS.TOKEN_EXPIRED }); } expect(gen.next(timeLeft).value).toEqual(expectedYield); expect(gen.next(timeLeft).value).toEqual(expectedYieldAction); expect(gen.next().done).toBeTruthy(); почему после yield put, generator не done? Все отрабатывает как надо, только с тестами беда, если убрать put, то после call(logoutSaga) - генератор завершается и с тестами все ок
Anonymous
;/
Anonymous
сцуко, главное если добавить консоль лог перед expect(gen.next().done).toBeTruthy(); - console.log(gen.next()); то получаю { value: undefined, done: true }
Vyacheslav
browser вообще для другого, это костыль какой то для browserify
Да. наверное ты прав, но факт остается фактом, какого что чена юзается нодовское окружение, в том смысле что я пробовал заимпортить одну из нужных мне вещей не из глобального скоупа, а вручную из utils подтянуть, то джест пускает дальше
Alexandr
Пт всем, подскажите как .env файлы грузить? Создалл файл, закинул в него переменную, подрубил в app.js require('dotenv').config(); вывожу переменную, а ее нет
Vyacheslav
так а чего конкретно не хватает в стандартном окружении, которое cra предоставляет?
во первых надо ставить последню ноду, чтобы использовать textEncoder без commonJs импортов из утилсов, во вторых в ноде пока никак не реализован, и не будет в ближайшее время(https://github.com/nodejs/node/issues/21580) WebCrypto API
Vyacheslav
Еще один камень в огород жеста, прочитал в доке `Jest is a Node-based runner. This means that the tests always run in a Node environment and not in a real browser. This lets us enable fast iteration speed and prevent flakiness. While Jest provides browser globals such as window thanks to jsdom, they are only approximations of the real browser behavior. Jest is intended to be used for unit tests of your logic and your components rather than the DOM quirks.`
Vyacheslav
Т.е. весь мир илюзия, и все эти моды и окружения у него, нечто иное как алиасы на вызовы неполных нодовских методов
Сергей
а никто не сталивался с таким, что в IE11 при обработчике onChange в type=file, если в конце метода ставить target.value = '', то значение будет пусто, а если onChange заменить на onInput, то все ок?
Nikolai
Т.е. весь мир илюзия, и все эти моды и окружения у него, нечто иное как алиасы на вызовы неполных нодовских методов
Вы что то не так поняли. Jest это просто тест-раннер + ассерт. Что вы им тестировать будете - jsdom, puppeteer, enzyme, ноду ему абсолютно плевать
Vyacheslav
Вы что то не так поняли. Jest это просто тест-раннер + ассерт. Что вы им тестировать будете - jsdom, puppeteer, enzyme, ноду ему абсолютно плевать
Да возможно, не так глубоко знаю в автотестах, но факт остается фактом, он имеет всего два окружения, одно из которых по-факту интефейс другого, буду искать что то более подходящее, медленнее, но с которым можно работать без костылей в моем случае
Сергей
onInput вроде не работает в IE11
он в edge не работает
Anton
у меня проблема была в 16 версии реакта конкретно в IE11)
Anton
c onInput)
Anton
возможно где то не разобрался с ним)
Anton
в связке с contentEditable
Anton
чатик делали, нужно было вместо textArea юзать div со своей логикой
Nikolai
Да возможно, не так глубоко знаю в автотестах, но факт остается фактом, он имеет всего два окружения, одно из которых по-факту интефейс другого, буду искать что то более подходящее, медленнее, но с которым можно работать без костылей в моем случае
На самом деле если у вас много юнит тестов через дом надо делать - это повод задуматься, что скорее всего логика с представлением сильно перемещана и лучше начать где возможно разделять эти вещи максимально, дробить на чистые функции и т.д. Возможно даже начать писать по TDD. Иначе боль будет всегда с тестами, если они являются обязательным требованием
Сергей
а никто не напомнит для чего делается target.value = '' в конце обработчика onChange для файла?
Сергей
Чтобы очистить инпут
а если я этого не напишу?
Nikolai
Anton
))))
Rustem
а если я этого не напишу?
не сможешь загрузить тот же файл
Сергей
Vyacheslav
На самом деле если у вас много юнит тестов через дом надо делать - это повод задуматься, что скорее всего логика с представлением сильно перемещана и лучше начать где возможно разделять эти вещи максимально, дробить на чистые функции и т.д. Возможно даже начать писать по TDD. Иначе боль будет всегда с тестами, если они являются обязательным требованием
Да нет, тесты пока не пишу вовсе, ни на логику ни на отображение, просто сейчас довольно серьезная логика около безопасности, и туда тесты хочешь не хочешь они важны, вот, в этих алгоритмах используется вещи которых нет в ноде, опять же cripto api, и поддержка браузера в тестах мне нужна только поэтому
🅅aleriy
ксттаи, а вы там у себя в тестах хотите заюзать crypto api вообще?
🅅aleriy
что это за тесты такие не совсем понятно
🅅aleriy
т.е. само крипто апи работает и тестировать там не чего а протестировать без него ваши компоненты вполне тривиальная задача
🅅aleriy
просто некоторые люди не понимают что и зачем вообще нужно тестировать
🅅aleriy
начинают воссоздавать во всех подробностях окружение
🅅aleriy
если в приложении редакс, то как же... надо обернуть компонент в провайдер! протащить все контексты иначе тесты получатся нереальные :)
🅅aleriy
в тоже время те же космические аппараты спокойненько себе тестироуют под водой
🅅aleriy
тут замокали, там зафейкали и проверили как все работает
Андрей
Есть такой layout. Типа квиза. Почему когда я выберу какойто пункт у меня при переходе на следующий у меня выраны эти же чекбоксы, компонент же перерисовался, почему остались активными чекбовксы от старого состояния?
Ilia
ребят,можно как-то создать ErrorBoundary,что бы отлавливать ошибки с использованием хуков?(Чем заменить componentDidCatch?)
Ilia
А без класса нельзя ?
Ilia
))
Vyacheslav
т.е. само крипто апи работает и тестировать там не чего а протестировать без него ваши компоненты вполне тривиальная задача
Использование cripto является промежуточной ступенью алгоритма, и надо протестировать его полностью. Юнит тестирование, насколько я понимаю, не есть тестирование компонентов, в моем случае тестируется алгоритм генеривания детерминированного пароля с 'куча умных слов' неважно, зашитый на клиенте, нет смысла рассуждать зачем это на клиенте, эт самый нормальный вариант в заданных условиях.
🅅aleriy
Не убедительно в общем :)
Vyacheslav
такие штуки нужно мокать
Наверное эт норм вариант, но вручную пересчитывать определенные кодировки для десятка входных данных для кейзов наверн такое, но видимо никак без этого(
Vyacheslav
Не убедительно в общем :)
Постараюсь в след. раз прийти в очках с указкой и строгом костюме)
Aiperi_NK
Всем привет 🙋! Пожалуйста можете подсказать: