
Сергей
07.04.2017
20:58:01

andretshurotshka?❄️кде
07.04.2017
20:58:14
да вроде уже все ок
ща проверю
наверно как сюда написал @SpamBot разбанили

Google

Aleh
07.04.2017
21:03:35
Бывает же)
Знаю чувака за мат так банили

andretshurotshka?❄️кде
07.04.2017
21:04:18

Aleh
07.04.2017
21:05:01
Там в чате одном на него видимо жалобы модер писал)

Vladimir
08.04.2017
06:22:53
https://www.manning.com/books/type-driven-development-with-idris

Vadim
08.04.2017
20:41:40
Может ли кто-нибудь скинуть ссылку на пример использования марбл-тестов?
Я что-то никак не могу понять как ими пользоваться
Вот тут https://github.com/ReactiveX/rxjs/blob/master/doc/writing-marble-tests.md в примере приводятся методы "hot" и "cold". А откуда их импортировать?
Вот например hot('--a--b', { a: 1, b: 2 })
В этом чате вообще кто-нибудь писал марбл-тесты?

andretshurotshka?❄️кде
08.04.2017
21:45:21
@vasyayorkin

Vasiliy
08.04.2017
21:45:42
да) ну так, забавлялся, у меня пара тестов в продакшне всего-то

Vadim
08.04.2017
21:46:25
Я так понял что марбл-тесты это пока сырое? Судя по тому что документации можно сказать нет в интернете

Google

Vadim
08.04.2017
21:46:42
Если так, то наверное это еще меняться будет кучу раз
И использовать пока не стОит )

Vasiliy
08.04.2017
21:47:06
у меня просто rxjs + redux + redux-observable
и я писал тесты на epic'и
у меня оставлся демо-тест даже

Vadim
08.04.2017
21:47:35
Наверное по этому примеру? http://jsbin.com/pufima/edit?js,output

Vasiliy
08.04.2017
21:48:25
да, типа того

Vadim
08.04.2017
21:48:40
Пока как я вижу, для прикручивания марбл тестов дофига писать всякой сопутствующей всячины приходится )

Vasiliy
08.04.2017
21:49:22
https://gist.github.com/vyorkin/9e640a30d442b298a74169cd257c4895
https://gist.github.com/vyorkin/57ff2af4b54b53debd1d254df917a0de

Vadim
08.04.2017
21:49:45
Спасибо!

Vasiliy
08.04.2017
21:50:05
я во всем этом разочаровался
имхо, слишком заумно)

Vadim
08.04.2017
21:50:13
Ага )
Наверное поэтому крайне редко пишут

Дмитрий
08.04.2017
21:51:28
Что за марбл тесты?)

Vasiliy
08.04.2017
21:51:50
ну

Vadim
08.04.2017
21:51:51
https://github.com/ReactiveX/rxjs/blob/master/doc/writing-marble-tests.md

Vasiliy
08.04.2017
21:51:54
test('example:marble a very basic', t => {
const { scheduler, hot, expectObservable } = setupMarble(t.same);
const e1 = hot('----a--^--b-------c--|');
const e2 = hot( '---d-^--e---------f-----|');
const expected = '---(be)----c-f-----|';
expectObservable(e1.merge(e2)).toBe(expected);
scheduler.flush();
t.end();
});

Дмитрий
08.04.2017
21:53:46

Vasiliy
08.04.2017
21:54:03
XDXD
меня вот это еще забавляет: Generating PNG marble diagrams from tests) кому нахрен может вообще когда-нибудь понадобиться генерить эти картинки?

Vadim
08.04.2017
21:54:41
В теории они придуманы наоборот для написания более наглядных и декларативных тестов обсерваблов )
Но хайпа пока не вышло )

Google

Vadim
08.04.2017
21:55:03
И даже замечено особо не было )
А вообще проблема в том, что пока вообще не придумано как просто и понятно писать тесты обсерваблов.

Vasiliy
08.04.2017
21:57:53
по-моему это наркотики вот это вот все)

Vadim
08.04.2017
21:58:08
Тесты получаются такими громоздкими, что их самих необходимо тестировать

Дмитрий
08.04.2017
21:58:17
А как вообще тестировать бесконечную во времени структуру?)
Тут уже концептуальная проблема, кмк

Vasiliy
08.04.2017
22:55:42
https://gist.github.com/vyorkin/7239359ab81c005a7c7d4dfa85a23e7a

Aleh
09.04.2017
08:34:06
Ерунда какая-то)
А никто не гоняет jsverify какой?

Filipp
09.04.2017
08:44:20
Никого не смущает тестировать структуры, условно бесконечные по количеству возможных ситуаций)
А как вообще тестировать бесконечную во времени структуру?)

Дмитрий
09.04.2017
08:44:53

Filipp
09.04.2017
08:45:17
Например примерно любая программа
Особенно с UI

Дмитрий
09.04.2017
08:46:37
Реакт пруфанёт, что UI — не бесконечен по числу вариантов

Filipp
09.04.2017
08:46:55
Невозможно покрыть тестами все возможные последовательности взаимодействия

Дмитрий
09.04.2017
08:47:04
Проблема в том, что бесконечность во времени гораздо хуже, чем бесконечность вариантов

Filipp
09.04.2017
08:47:16
Чем?

Google

Дмитрий
09.04.2017
08:47:56
Чем вариантов

Андрей
09.04.2017
08:48:55
Конечно хуже только в реальности и есть бесконечность по времени
пользователь один и тот же уи может тыкать примерно бесконечно
хоть на цикле хоть на реакте хоть на жквери
штуки типо цикла просто позволяют это выражать первоклассными концепциями

Дмитрий
09.04.2017
08:49:30
UI на реакте доказуемо имеет инварианты
Насчёт стримов — не уверен

Андрей
09.04.2017
08:50:23
уи на реакте доказуемо не имеет инвариатов относительно перехода между состояниями
их даже выразить то первоклассно нельзя

Дмитрий
09.04.2017
08:50:48
У реакта есть как минимум стейт

Андрей
09.04.2017
08:51:20
потому что ты даже выразить не можешь последовательность переходов - у тебя для этого нет какой то первоклассной конструкции

Дмитрий
09.04.2017
08:51:33
А зачем их выражать?

Андрей
09.04.2017
08:52:12
зачем везде нужны first-class вместо second-class?

Дмитрий
09.04.2017
08:52:12
Если стейт будет инвариантен, то ему всё равно так же и на последовательность действий, приводящих к нему

Андрей
09.04.2017
08:53:55
>всё равно так же и на последовательность действий
залипающая валидация и не работающие при определнных последовательностях маски прям так это и подтверждают
последовательность очень важна так как приложения интерактивные и долгоживущие
у стрима есть возможность работать с ним как с первоклассным значением
значит есть возможность это нормально тайпить, тестировать, проперти тестировать и так далее

Дмитрий
09.04.2017
08:55:48
Твои примеры доказывают, что есть особые случаи, подход к которым нужно рассматривать отдельно
В моём же случае я просто не вижу, за что можно зацепиться вообще изначально
Ну вот не в курсе я, поэтому и интересуюсь
В случае с реактом мы отсекли инварианты и пришли к группе особых случаев

Google

Дмитрий
09.04.2017
08:58:19
Я поясню ещё раз — я реально не знаю, и хочу понять, как действовать в случае со стримами)

Андрей
09.04.2017
08:59:30
это не особые случаи - это называется интерактивность
постепенно все приложения будут становится более и более интерактивными. То есть в пределе это трансформационная логика станет очень частным случаем.
Именно поэтому человечество и вернулось к мессадж пассингу который был забыт с 80-х
стримы первоклассны - их можно типизировать, их можно проперти тестировать - какие еще инварианты ты хочешь?

Дмитрий
09.04.2017
09:03:41
Короче ясно
Поинтересуюсь ещё через год-другой

Aleh
09.04.2017
09:14:41
https://youtu.be/VDfX44fZoMc
Количество инвариантов у отдельного юнита конечно
И даже мало настолько, что все можно без проблем покрыть

Vadim
09.04.2017
09:33:05
Гоняю под jest
Это то же самое что под Jasmine

Aleh
09.04.2017
09:33:40
А что покрываете им?

Vadim
09.04.2017
09:34:24
Покрывал варианты чисел или стрингов
А в чем вопрос у тебя?

Aleh
09.04.2017
09:37:08
Когда вы его используете

Vadim
09.04.2017
09:40:29
Я думаю это имеет смысл использовать для покрытия конкретной функциональности любого юнита. Например метод должен вернуть сумму а и б. И jsverify передает ему 100 случайных вариантов чисел а и б, для того что б видеть что вне зависимости от конкретных значений метод работает правильно