Sergey
фуфуфу
Sergey
demo1(100) .then(demo2) .then(demo3)
W.Ed.
все пишут
что проще всего?
Ale
хотя стоп
W.Ed.
или удобнее
Ale
return demo3(demo2(demo1(yield Promise.resolve(100))));
Aleksey
А зачем на генераторы?
Aleksey
Почему не асинки?
Sergey
лучше всего на async/await )))
Ale
:s/yield/await
Anonymous
Удобнее так: const res1 = await demo1(100); const res2 = await demo2(res1); const res3 = await demo3(res2); Или const res3 = await demo1(100) .then(demo2) .then(demo3);
Anonymous
Законом не запрещено.
Sergey
второй вариант ИМХО проще и приятнее
Aleksey
Не знаю, мне мешать не нравится.
Anonymous
W.Ed.
соберу воедино: кто пишет тесты под ноду, что используете? что удобнее?
Aleksey
Anonymous
Пишу на mocha+chai+proxyquire
Anonymous
Хм, нафига?
Эвэйт работает с промисом. Если тебе нужно вписать в эту парадигму какой-то асинхронный интерфейс, который принимает только колбэки, тебе придётся завернуть его в промис.
Anonymous
Хм, нафига?
И вообще, async/await — просто сахар над промисами.
Vl
Вопрос. Есть ли возможность чтобы одним из webRTC клиентов был nodejs сервер. Который бы доставлял по socket.io видео поток клиентам остальным. и была бы возможность доставлять видео-поток пользователям с IOS. Ибо их обедили WebRTC. И просто так доставить им видео не выходит. HLS&ffmpeg не совсем то. Так как задержка очень большая выходит. Нужен реальный совет, а не просто первые ссылки с гугла. Буду оч. благодарен.
Anonymous
Лол.
Sergey
И? Отдельная arrow fn или обычная fn.
давно выяснили коллбеки говно ))
W.Ed.
Пишу на mocha+chai+proxyquire
а нафига столько?
Anonymous
а нафига столько?
Мокка — запуск тестов, чай — ассерт-библиотека, proxyquire — заглушки для зависимостей тестируемого модуля.
Ale
sinon еще
franza
> proxyquire фу какая гадость
Sergey
мне интересно все знают о флаге --inspect?
Anonymous
franza
Передавать зависимости параметрами функции или конструкторы
Anonymous
То есть, даже fs и request нужно будет передавать как параметр? Лол.
Anonymous
И только ради тестирования настолько усложнять код?
franza
Тут нет усложнения
franza
Работал так на нескольких проектах
franza
Брат жив
franza
Пробовал rewire
Anonymous
Тут нет усложнения
Пример кода бы.
franza
Оказалось, что он не работает, когда у тебя наследование
franza
А injection hell случается, когда в коде плохие абстракции
franza
То есть если ты передаешь 10 зависимостей, то значит, у тебя плохой дизайн
franza
А модули это всего лишь неймспейсы
Anonymous
А injection hell случается, когда в коде плохие абстракции
Да, в любом случае, где-то в коде есть место, где ты передаёшь зависимость.
franza
Не надо через require инжектить пожалуйста
Anonymous
Я вижу только один адекватный путь — передавать зависимости перед объявлением модуля, объявляя модуль как функцию.
Anonymous
В то же самое время, где-то в коде будет место, где я делаю так: import fs from 'fs'; import myModuleInit from './my-module'; const myModule = myModuleInit({ fs }); С myModule всё понятно, но как ЭТОТ код тестировать?
Anonymous
Объявлять так же, как myModule? Тогда список зависимостей ближе к верхнему уровню будет расти.
Anonymous
Ну и нафиг оно нужно?
Ale
тут скорее надо знать границу
Ale
lodash и moment например нет смысл подменять
Anonymous
Депенси инъекшн — это не повсеместный подход. Он хорош там, где зависимость заменяема и имеет стандартный внешний интерфейс.
Ale
fs тоже очень зависит, а например сервис, который на базе фс реализует какой-нибудь репозиторий - есть
Anonymous
Иначе нафига?
Anonymous
fs тоже очень зависит, а например сервис, который на базе фс реализует какой-нибудь репозиторий - есть
Мне кажется, всегда нужно менять то, что обращается к неизвестным данным.
Anonymous
Неизвестные данные — те, которых нет в репозитории.
Anonymous
БД, файлы, соединения, прочая фигня.
Anonymous
Депенси инъекшн — это не повсеместный подход. Он хорош там, где зависимость заменяема и имеет стандартный внешний интерфейс.
Продолжая эту мысль, повсеместное применение этого подхода приведёт к неоправданному усложнению.
Дима
Но тебе всегда требуется делать всё своим особым костылём, так что я даже не удивлен уже)
Vladimir
Vladimir
> @klond90 надо на flow переходить или typescript
Vladimir
Не дай бог кто удалить Трампа еще раз
Michael
Дима
Дима
Хороший президент 👍
Vladimir
Стикеры вне политики
Vladimir
Это просто стикеры
Дима
Ну вот так
Ale
чуваки в jest юзают аналог proxyquire
Anonymous
Если тебе требуется proxyquire, значит ты делаешь что-то не так
Вот мне нужно протестировать одну функцию, которая вызывает другую и использует возвращаемый ею результат. Если я не подменю эту зависимость, то тесты упадут как в случае ошибки как в зависимом коде, так и в коде зависимости. Я считаю, что ты сразу должен видеть, где возникла ошибка, и ображаться она должна только на тестах той функции, где она возникла.
Anton
имхо, тогда смысл теряется писать на ноде. ты можешь взять язык, где типизация из коробки, без всяких обмазываний костылями-транспайлерами. исключение разве-что, если задачи гвоздями прибита к экосистеме и все должно быть на ноде тоже.