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
Все вроде четко
Tutu
точняк)
Aizada
спасибо
Vyacheslav
Ребят, нужен совет, есть варианты в cra переписать в jest конфиге свойство browser на true без еджекта, я плять просто в шоке, зачем блеть в cra по умолчанию стоит окружение ноды, плес хелп
Frontend Priest
🅅aleriy
Nikolai
🅅aleriy
Nikolai
https://doc.ebichu.cc/jest/docs/ru/configuration.html#testenvironment-string
Vyacheslav
для тестов?
Если ты не тестируешь функции a + b то с нодой будет достаточно проблем, продвинутые апи в ноде и браузере цепляются и работают по разному
G.
Как думаете, что в фразе "используете библиотеку-коннектор для нашего API" подразумеваться под библиотекой-коннектором?
Nikolai
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) - генератор завершается и с тестами все ок
Nikolai
🦜
Anonymous
;/
Anonymous
сцуко, главное если добавить консоль лог перед expect(gen.next().done).toBeTruthy(); - console.log(gen.next());
то получаю { value: undefined, done: true }
🅅aleriy
Alexandr
Пт всем, подскажите как .env файлы грузить? Создалл файл, закинул в него переменную, подрубил в app.js require('dotenv').config(); вывожу переменную, а ее нет
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, то все ок?
Anton
Сергей
Vyacheslav
Вы что то не так поняли. Jest это просто тест-раннер + ассерт. Что вы им тестировать будете - jsdom, puppeteer, enzyme, ноду ему абсолютно плевать
Да возможно, не так глубоко знаю в автотестах, но факт остается фактом, он имеет всего два окружения, одно из которых по-факту интефейс другого, буду искать что то более подходящее, медленнее, но с которым можно работать без костылей в моем случае
Сергей
Anton
у меня проблема была в 16 версии реакта конкретно в IE11)
Anton
c onInput)
Anton
возможно где то не разобрался с ним)
Anton
в связке с contentEditable
Anton
чатик делали, нужно было вместо textArea юзать div со своей логикой
Nikolai
Да возможно, не так глубоко знаю в автотестах, но факт остается фактом, он имеет всего два окружения, одно из которых по-факту интефейс другого, буду искать что то более подходящее, медленнее, но с которым можно работать без костылей в моем случае
На самом деле если у вас много юнит тестов через дом надо делать - это повод задуматься, что скорее всего логика с представлением сильно перемещана и лучше начать где возможно разделять эти вещи максимально, дробить на чистые функции и т.д. Возможно даже начать писать по TDD. Иначе боль будет всегда с тестами, если они являются обязательным требованием
Сергей
а никто не напомнит для чего делается target.value = '' в конце обработчика onChange для файла?
Nikolai
Nikolai
Anton
))))
Сергей
Vyacheslav
На самом деле если у вас много юнит тестов через дом надо делать - это повод задуматься, что скорее всего логика с представлением сильно перемещана и лучше начать где возможно разделять эти вещи максимально, дробить на чистые функции и т.д. Возможно даже начать писать по TDD. Иначе боль будет всегда с тестами, если они являются обязательным требованием
Да нет, тесты пока не пишу вовсе, ни на логику ни на отображение, просто сейчас довольно серьезная логика около безопасности, и туда тесты хочешь не хочешь они важны, вот, в этих алгоритмах используется вещи которых нет в ноде, опять же cripto api, и поддержка браузера в тестах мне нужна только поэтому
Vyacheslav
Да нет, тесты пока не пишу вовсе, ни на логику ни на отображение, просто сейчас довольно серьезная логика около безопасности, и туда тесты хочешь не хочешь они важны, вот, в этих алгоритмах используется вещи которых нет в ноде, опять же cripto api, и поддержка браузера в тестах мне нужна только поэтому
Есть костыль, это затащить в этот фронтовой проект полифил под ноду, но это простите уже совсем такое.
🅅aleriy
🅅aleriy
ксттаи, а вы там у себя в тестах хотите заюзать crypto api вообще?
🅅aleriy
что это за тесты такие не совсем понятно
🅅aleriy
🅅aleriy
т.е. само крипто апи работает и тестировать там не чего
а протестировать без него ваши компоненты вполне тривиальная задача
Тимофей 🛴
🅅aleriy
🅅aleriy
просто некоторые люди не понимают что и зачем вообще нужно тестировать
🅅aleriy
начинают воссоздавать во всех подробностях окружение
🅅aleriy
если в приложении редакс, то как же... надо обернуть компонент в провайдер! протащить все контексты иначе тесты получатся нереальные :)
🅅aleriy
в тоже время те же космические аппараты спокойненько себе тестироуют под водой
🅅aleriy
тут замокали, там зафейкали и проверили как все работает
Андрей
Есть такой layout. Типа квиза. Почему когда я выберу какойто пункт у меня при переходе на следующий у меня выраны эти же чекбоксы, компонент же перерисовался, почему остались активными чекбовксы от старого состояния?
Ilia
ребят,можно как-то создать ErrorBoundary,что бы отлавливать ошибки с использованием хуков?(Чем заменить componentDidCatch?)
Yury
Vadim
Ilia
А без класса нельзя ?
Ilia
))
Василий
🅅aleriy
🅅aleriy
Не убедительно в общем :)
Vyacheslav
такие штуки нужно мокать
Наверное эт норм вариант, но вручную пересчитывать определенные кодировки для десятка входных данных для кейзов наверн такое, но видимо никак без этого(
Aiperi_NK
Всем привет 🙋! Пожалуйста можете подсказать: