Size: a a a

2020 June 22

V

Vasilii Demidenok in ErlangRus
Maksim Lapshin
Посмотреть бы на пример
вставляешь явные receive в такой функции, ждёшь события - продолжаешь взаимодействие, вызываешь оригинальный код через meck:passthrough
источник

AK

Aleksey Kluchnikov in ErlangRus
Иванов Иванов
Целиком тоже надо. Можно и без юнитов но тогда надо смотреть покрытие. Чем? + Долго и дорого
Прямо из комон теста вызываешь юнит тесты. И тогда они вроде как есть, но работают на поднятой системе
источник

V

Vasilii Demidenok in ErlangRus
Это конкретный пример, использовал буквально неделю назад - продемонстрировать рейс кондишен в одной из наших подсистем.
источник

AK

Aleksey Kluchnikov in ErlangRus
Vasilii Demidenok
Это конкретный пример, использовал буквально неделю назад - продемонстрировать рейс кондишен в одной из наших подсистем.
вот для демонстрации мне кажется мокать нормально
источник

V

Vasilii Demidenok in ErlangRus
Удобно таймеры подменять, если нужно треггирить в определённый момент, в общем много чего можно делать.
источник

AK

Aleksey Kluchnikov in ErlangRus
Vasilii Demidenok
Удобно таймеры подменять, если нужно треггирить в определённый момент, в общем много чего можно делать.
с другой стороны это все делается автоматической горячей подгрузкой кода, мгновенно применяешь себе все что хочешь
источник

V

Vasilii Demidenok in ErlangRus
очень странное утверждение, ты под каждый тест будешь дупликат модуль делать ?
источник

ML

Maksim Lapshin in ErlangRus
Vasilii Demidenok
вставляешь явные receive в такой функции, ждёшь события - продолжаешь взаимодействие, вызываешь оригинальный код через meck:passthrough
Как я говорю, посмотреть бы.

Мы очень много навтыкали себе внутреннего pub sub.

В одном месте:

events:source_ready()

В другом подписка на этот евент и его ожидание
источник

ML

Maksim Lapshin in ErlangRus
А вот timer:sleep под запретом
источник

AK

Aleksey Kluchnikov in ErlangRus
Vasilii Demidenok
очень странное утверждение, ты под каждый тест будешь дупликат модуль делать ?
Это для демонстрации, понятно что для тестов это моки. Но опять же у меня под 80% покрытия тестами получается без моков
источник

V

Vasilii Demidenok in ErlangRus
я и не говорил что мек надо всюду вставлять 😉 просто полезный тул, не более
источник

ML

Maksim Lapshin in ErlangRus
Vasilii Demidenok
я и не говорил что мек надо всюду вставлять 😉 просто полезный тул, не более
Так я и говорю: посмотреть бы :)
источник

V

Vasilii Demidenok in ErlangRus
Maksim Lapshin
Так я и говорю: посмотреть бы :)
Это я Aleksey отвечал если что ) Если есть конкретные вопросы - спрашивай, а так код closed source, сорян )
источник

V

Vasilii Demidenok in ErlangRus
Ещё юзкейсы - замокать и посчитать сколько раз была вызвана конкретная функция, если подругому по ней по каким-то причинам статистику взять сложнее. Чисто технически такое можно конечно и трейсингом взять, мек не то чтобы панацея.
источник

ИИ

Иванов Иванов... in ErlangRus
Maksim Lapshin
Как я говорю, посмотреть бы.

Мы очень много навтыкали себе внутреннего pub sub.

В одном месте:

events:source_ready()

В другом подписка на этот евент и его ожидание
вот о том и речь, что без нормальных тестов - тут припарить, там подогреть. и всё равно всё не покрыть.
источник

ИИ

Иванов Иванов... in ErlangRus
Vasilii Demidenok
Ещё юзкейсы - замокать и посчитать сколько раз была вызвана конкретная функция, если подругому по ней по каким-то причинам статистику взять сложнее. Чисто технически такое можно конечно и трейсингом взять, мек не то чтобы панацея.
да тут и обсуждать нечего.  тестируешь модуль Б, без моков - приходилось лезть в модуль А и там городить заглушки или эмулятор A городить.  не было-бы такого дизайна otp как он есть, может и мок не нужен был-бы.
источник

SP

Sergey Prokhorov in ErlangRus
у нас коллега такую штуку сделал https://github.com/klarna/snabbkaffe
источник

SP

Sergey Prokhorov in ErlangRus
но есть минус - нужно в реальный код вставлять tracepoints. Правдв они в prod сборке преварщаются в noop
источник

V

Vasilii Demidenok in ErlangRus
Не объяснишь кратенько в чём преимущество?
источник

SP

Sergey Prokhorov in ErlangRus
не нужно мокать =)
источник