
Aleh
25.11.2016
10:46:22
:s/yield/await

Котяй Негодяй
25.11.2016
10:46:31
Удобнее так:
const res1 = await demo1(100);
const res2 = await demo2(res1);
const res3 = await demo3(res2);
Или
const res3 = await demo1(100)
.then(demo2)
.then(demo3);
Законом не запрещено.

Сергей
25.11.2016
10:46:51
второй вариант ИМХО проще и приятнее

Google

Aleksey
25.11.2016
10:47:00
Не знаю, мне мешать не нравится.

Котяй Негодяй
25.11.2016
10:47:14

Suika
25.11.2016
10:47:29
соберу воедино:
кто пишет тесты под ноду, что используете? что удобнее?

Aleksey
25.11.2016
10:48:04

Котяй Негодяй
25.11.2016
10:48:10
Пишу на mocha+chai+proxyquire
Хм, нафига?
Эвэйт работает с промисом. Если тебе нужно вписать в эту парадигму какой-то асинхронный интерфейс, который принимает только колбэки, тебе придётся завернуть его в промис.
Хм, нафига?
И вообще, async/await — просто сахар над промисами.

Vladislav
25.11.2016
10:49:45
Вопрос. Есть ли возможность чтобы одним из webRTC клиентов был nodejs сервер. Который бы доставлял по socket.io видео поток клиентам остальным. и была бы возможность доставлять видео-поток пользователям с IOS. Ибо их обедили WebRTC. И просто так доставить им видео не выходит. HLS&ffmpeg не совсем то. Так как задержка очень большая выходит. Нужен реальный совет, а не просто первые ссылки с гугла. Буду оч. благодарен.

Aleksey
25.11.2016
10:49:47

Котяй Негодяй
25.11.2016
10:50:11
Лол.

Сергей
25.11.2016
10:51:25

Google

Suika
25.11.2016
10:51:51

Котяй Негодяй
25.11.2016
10:54:36
а нафига столько?
Мокка — запуск тестов, чай — ассерт-библиотека, proxyquire — заглушки для зависимостей тестируемого модуля.

Aleh
25.11.2016
10:55:47
sinon еще

Yusup
25.11.2016
10:57:24
> proxyquire
фу какая гадость

Сергей
25.11.2016
11:05:23
мне интересно
все знают о флаге --inspect?

Котяй Негодяй
25.11.2016
11:12:57

Yusup
25.11.2016
11:14:01
Передавать зависимости параметрами функции или конструкторы

Котяй Негодяй
25.11.2016
11:15:01
То есть, даже fs и request нужно будет передавать как параметр? Лол.
И только ради тестирования настолько усложнять код?

Yusup
25.11.2016
11:17:56
Тут нет усложнения
Работал так на нескольких проектах
Брат жив
Пробовал rewire

Котяй Негодяй
25.11.2016
11:18:31

Yusup
25.11.2016
11:18:41
Оказалось, что он не работает, когда у тебя наследование
А injection hell случается, когда в коде плохие абстракции

Котяй Негодяй
25.11.2016
11:19:17

Yusup
25.11.2016
11:19:43
То есть если ты передаешь 10 зависимостей, то значит, у тебя плохой дизайн
А модули это всего лишь неймспейсы

Google

Котяй Негодяй
25.11.2016
11:20:03

Yusup
25.11.2016
11:20:16
Не надо через require инжектить пожалуйста

Котяй Негодяй
25.11.2016
11:22:16
Я вижу только один адекватный путь — передавать зависимости перед объявлением модуля, объявляя модуль как функцию.
В то же самое время, где-то в коде будет место, где я делаю так:
import fs from 'fs';
import myModuleInit from './my-module';
const myModule = myModuleInit({ fs });
С myModule всё понятно, но как ЭТОТ код тестировать?
Объявлять так же, как myModule? Тогда список зависимостей ближе к верхнему уровню будет расти.
Ну и нафиг оно нужно?

Aleh
25.11.2016
11:34:34
тут скорее надо знать границу
lodash и moment например нет смысл подменять

Котяй Негодяй
25.11.2016
11:35:38

Felix
25.11.2016
11:35:49

Котяй Негодяй
25.11.2016
11:36:04
Депенси инъекшн — это не повсеместный подход. Он хорош там, где зависимость заменяема и имеет стандартный внешний интерфейс.

Aleh
25.11.2016
11:36:09
fs тоже очень зависит, а например сервис, который на базе фс реализует какой-нибудь репозиторий - есть

Котяй Негодяй
25.11.2016
11:36:15
Иначе нафига?
Неизвестные данные — те, которых нет в репозитории.
БД, файлы, соединения, прочая фигня.

KlonD90
25.11.2016
11:56:39
хорошо что google amp использует drake hotline bling в качестве примера iframe'а
call me on my cell phone

Google

Дмитрий
25.11.2016
12:05:42

KlonD90
25.11.2016
12:06:48
как не повсеместный? :(
надо на flow переходить или typescript
попроще же будет

Дмитрий
25.11.2016
12:07:04
Но тебе всегда требуется делать всё своим особым костылём, так что я даже не удивлен уже)

Vladimir
25.11.2016
12:10:09
> @klond90
надо на flow переходить или typescript
Не дай бог кто удалить Трампа еще раз

Admin
ERROR: S client not available

KlonD90
25.11.2016
12:10:48
хилари фаны кругом? :(

Дмитрий
25.11.2016
12:12:10
Хороший президент ?

Vladimir
25.11.2016
12:12:41
Стикеры вне политики
Это просто стикеры

Котяй Негодяй
25.11.2016
12:40:24

Дмитрий
25.11.2016
12:42:13
Ну вот так

Aleh
25.11.2016
12:42:38
чуваки в jest юзают аналог proxyquire

Ҫѐҏӗѫӑ
25.11.2016
12:42:57

Котяй Негодяй
25.11.2016
12:45:04
Если тебе требуется proxyquire, значит ты делаешь что-то не так
Вот мне нужно протестировать одну функцию, которая вызывает другую и использует возвращаемый ею результат. Если я не подменю эту зависимость, то тесты упадут как в случае ошибки как в зависимом коде, так и в коде зависимости. Я считаю, что ты сразу должен видеть, где возникла ошибка, и ображаться она должна только на тестах той функции, где она возникла.

Anton
25.11.2016
12:51:43
надо на flow переходить или typescript
имхо, тогда смысл теряется писать на ноде. ты можешь взять язык, где типизация из коробки, без всяких обмазываний костылями-транспайлерами. исключение разве-что, если задачи гвоздями прибита к экосистеме и все должно быть на ноде тоже.

KlonD90
25.11.2016
12:52:24
flow это не транспайлер.

Ҫѐҏӗѫӑ
25.11.2016
12:52:26
для ноды лучше взять flow имхо

Google

Ҫѐҏӗѫӑ
25.11.2016
12:52:37
чтобы быть уверенным в выходном коде
для фронта тс лучше

KlonD90
25.11.2016
12:54:48
ну и вообще без статических ошибок в рантайме ловить ошибки очень геморойно и стремно лучше уж совсем глупые опечатки и т.д. убирать :/

Ҫѐҏӗѫӑ
25.11.2016
12:56:56

Дмитрий
25.11.2016
12:56:58
В js есть либы для рантайм типизации, только ими никто не пользуется

Ҫѐҏӗѫӑ
25.11.2016
12:57:12
они не нужны

Alexey
25.11.2016
12:57:54
типо assert?

Дмитрий
25.11.2016
12:57:55
Это тождественно

KlonD90
25.11.2016
12:58:32
рантайми типизация это не круто же
ну где-нибудь где ты ждешь ответа от базы или каких-то левых источников ок а в своем же коде такие штуки вводить чот стремно

Alexey
25.11.2016
12:59:26
кажется описание json схемы актуальнее
для данных с внешнго сервиса

KlonD90
25.11.2016
13:04:55
ну по сути да transpiler в реальности же код не удаляется ничего от себя не добавляет тьфу тьфу

Котяй Негодяй
25.11.2016
13:05:04

KlonD90
25.11.2016
13:05:27
Optional ?
монады <3

Дмитрий
25.11.2016
13:06:08
Ну это и в js есть
Причём даже не один вариант