
Ҫѐҏӗѫӑ
04.11.2016
16:40:13
там хреновый пример
мне надо идти пить
но надо код на слайд

Google

Ҫѐҏӗѫӑ
04.11.2016
16:40:35
наверняка у кого-то есть
а я пока другие слайды доделаю
придется самому писать(

from
04.11.2016
16:44:50
))
import React from 'react';
class Component extends React.Component {
handleClick = () => {
this.props.fetchData();
}
render() {
return (
<button onClick={this.handleClick}></button>
);
}
}
export default Component;

n0z3r0
04.11.2016
16:45:57
Ребята я тут вообще в восторге от Jest!

Defiancefew
04.11.2016
16:46:13
от снэпшотов?

n0z3r0
04.11.2016
16:46:22
Тесты для React компонентов :) это просто обалденно!

Ҫѐҏӗѫӑ
04.11.2016
16:46:28
лол

n0z3r0
04.11.2016
16:46:39
+ для Store + Для WebAPI
вообще огонище!
Вы же тоже пишите тесты?

Dreamerinnoise
04.11.2016
16:46:51
Mind Blown

Google

n0z3r0
04.11.2016
16:46:56
А моки какие мммууууааахх!
Просто зашибенные :)

from
04.11.2016
16:47:29

Ҫѐҏӗѫӑ
04.11.2016
16:49:22
ну как после любого экспрешна. спасибо, Ярослав

Vladimir
04.11.2016
16:50:54
YmpCNk0zSXc= я вот столкнулся с тем, что нельзя просто так импорт замокать в отдельном тесте, что не очень удобно

n0z3r0
04.11.2016
16:51:14
аааа ну есть такое :)
Но я пока не сталкнулся с такой надобностью :)

Vladimir
04.11.2016
16:51:46
ну и если тесты на DOM настоящий завязаны, тоже проблема

n0z3r0
04.11.2016
16:53:06
Ну не знаю :) вроде норма :) если через shalow или mount из enzyme

Grigory
04.11.2016
16:53:12
Парни а кто имел дело c redux-form, кидаю ошибку в хэндлер, а по факту в пропсах формы ошибки нет хотя экшн я вижу
"redux-form/SET_SUBMIT_FAILED"

n0z3r0
04.11.2016
16:53:23
airbnb :) авторы :)
http://airbnb.io/enzyme/docs/api/shallow.html
Это по теме тестов на реальном ДОМе

Vladimir
04.11.2016
16:57:43
YmpCNk0zSXc= я немного не про то. что делать, если у меня в компоненте есть строчка node.parentNode.clientWidth?
или document.body.clientWidth?
мой гугл кунгфу говорит, что clientWidth в jsdom не работает и не будет работать
может, чат опровергнет?

n0z3r0
04.11.2016
16:59:28
Ого :) Хм :) ну это да, сильно специфическая вещь
А может как то замокать можно?

Grigory
04.11.2016
16:59:41
Не будет)

n0z3r0
04.11.2016
16:59:46
clientWidth

Google

Vladimir
04.11.2016
17:00:26
Element.prototype.clientWidth? фигово, потому что тест, например, нужен для сравнения body => width и node => width
сразу все замокается)

Grigory
04.11.2016
17:01:19
PhantomJS такое может

Vladimir
04.11.2016
17:01:54
ну вот, а фантом запускается через карму

Dreamerinnoise
04.11.2016
17:01:59
подождите headless chrome
он вроде скоро скоро будет

Vladimir
04.11.2016
17:02:28
вроде год назад еще объявили, а воз и ныне там

Dreamerinnoise
04.11.2016
17:02:57

Vladimir
04.11.2016
17:04:17
ну лады, но суть не поменяется ведь, все равно какая-нибудь карма нужна будет

Anton
04.11.2016
17:07:45
ребят, такая проблема
Имеется fetch(…).then(…).catch(err => dispatch(blabla(err)))
почему этот кэтч ловит абсолютно все ошибки, даже в другим компонентах
Как правильно ловить ошибки из запроса?

Vladimir
04.11.2016
17:16:10
все зависи от того ,что сделать хотите. catch поймает throw и reject из цепочки

Anton
04.11.2016
17:17:26
Ну, если допустим у меня в запросе 500 ошибка или 401, как мне их ловить и отдавать в нужный диспатч?

Vladimir
04.11.2016
17:18:40
401 -> reject -> catch -> обработка, насколько я понимаю

Anton
04.11.2016
17:18:59
т.е. catch внутри then делать?

Grigory
04.11.2016
17:19:00
catch ловит любую ошибку в стеке которая произошла с начала вызова

Vladimir
04.11.2016
17:19:40
почти то же, что try...catch, только для асинхронных функций
http://learn.javascript.ru/promise

Google

Anton
04.11.2016
17:20:36
спасибо, чет не додумался в доке глянуть

Grigory
04.11.2016
17:21:03
то есть например если диспатчится экшн о начале загрузки а при рендере вылетает ошибка то она улетит в catch промиса

Anton
04.11.2016
17:21:58
ага, теперь понял как правильно

Vladimir
04.11.2016
17:28:37
друзья, а вы react и react-dom в vendors.js какой-нибудь выносите?

Исмаил
04.11.2016
17:30:40
Через commons chunk

Dreamerinnoise
04.11.2016
17:31:00
а кто-то упарывается и через DllReferencePlugin

Vladimir
04.11.2016
17:31:37
угу, про dll видел пару статеек, спасибо
Друзья, а эта штука только для продакшна должна использоваться? https://www.npmjs.com/package/lodash-webpack-plugin

Leonid
04.11.2016
17:52:47

Vladimir
04.11.2016
17:53:48
@leo_nik в babelrc достаточно будет
"development": {
"plugins": [
"transform-react-jsx-source",
"lodash"
]
},
"production": {
"plugins": [
"lodash"
]
}
?

Leonid
04.11.2016
17:54:28

Vladimir
04.11.2016
17:54:44
ага, но он в связке с бабелевским
точно, доку как раз к бабелевскому смотрел, перепутал)

Leonid
04.11.2016
17:55:21
бабеловский может и один юзаться

Vladimir
04.11.2016
17:56:27
ага, понял

Leonid
04.11.2016
17:56:29
приведу пример на что я напарывался, когда в dev не юзал этот плагин: без flattening если делал так _.flowRight(fn1, fn2, fn3), то в продакшн env падала ошибка, надо было передавать массив _.flowRight([fn1, fn2, fn3])
это не всегда легко отловить в коде
приходилось всегда еще и в продакшн энв тестировать приложение на предмет правильного вызова функций lodash-а

Vladimir
04.11.2016
17:59:08
действительно, сразу на ошибку нарвался. спасибо, а то бы так в прод и залил)

Ilya
04.11.2016
18:56:29
привет, умеет кто в SSR?

Google

Vladimir
04.11.2016
18:56:59
а что там сложного?

Ilya
04.11.2016
18:57:34
как вы боретесь с тем, что нода не умеет импорты и ничего не знает о вебпаковском resolve.root (если вы им пользуетесь)?

Evgeny
04.11.2016
18:58:01
NODE_PATH
Импорты — babel-node

Vladimir
04.11.2016
18:58:28
просто babel-loader

Evgeny
04.11.2016
18:58:45
NODE_ENV=production APP_ENV=production NODE_PATH=./src $(npm bin)/babel-node server.js

Vladimir
04.11.2016
18:59:05
babel-node лучше не гонять на проде
зачем? если можно гонять оттранспайленную версию?

Дмитрий
04.11.2016
18:59:32

Vladimir
04.11.2016
19:00:16