jest-mock: все лгут?

  Рет қаралды 15,922

JavaScript.Ninja

JavaScript.Ninja

3 жыл бұрын

Код из видео: gitlab.com/javascript-ninja/d...
Про мастер-класс по Unit-тестированию (и по Jest) вы можете узнать на javascript.ninja
Issue на GitHub: github.com/facebook/jest/issu...
---
Видео создано благодаря подписчикам проекта на нашем Patreon.
Хотите получать контент на 3 месяца раньше остальных? Присоединяйтесь! / javascriptninja

Пікірлер: 49
@StanislavObrazcoff
@StanislavObrazcoff 3 жыл бұрын
Илья, большая благодарность за подобные материалы. Не знаю когда там у вас есть время на сон, но работа проделана просто титаническая!
@DamirSadykov-qx7um
@DamirSadykov-qx7um 3 жыл бұрын
Спасибо Илья, крутое видео! Хоть тесты и не пишу, но полезно знать, что есть такие нюансы, там где их не ожидаешь встретить, вроде такой популярной библиотеки. Как говориться на Jest надейся, а объекты лучше не мутировать
@dimap.7298
@dimap.7298 3 жыл бұрын
Спасибо. Решил добавить в свой конфиг eslint-plugin-no-async-without-await (он уже депрекейтнут -- используйте require-await вместо)
@victorchilari
@victorchilari 3 жыл бұрын
😆
@life_on_fire
@life_on_fire 3 жыл бұрын
Спасибо, было интересно, жена тестер, потролю ее автотесты) в целях образовательных естественно))
@railbatyrshin7349
@railbatyrshin7349 2 жыл бұрын
Илье спасибо, пока ничего не понятно, но скоро пройду курс по тестам и вновь открою данное видео) Всем удачной разработки
@MrStoikiy
@MrStoikiy 3 жыл бұрын
А на канале есть ещё какие нибудь гайды по jest? Я бы хотел качнуть свой уровень в этом направлении
@neuro_coder_ai_bot
@neuro_coder_ai_bot 2 жыл бұрын
Very good!
@unev
@unev 2 жыл бұрын
Приветствую! Приходилось ли заниматься производительностью jest тестов? Может быть есть какие-то соображения?
@AlexKozack
@AlexKozack 3 жыл бұрын
а в jest можно проверять что один метод класса вызвался раньше второго?
@user-cp1ow5vp4j
@user-cp1ow5vp4j 3 жыл бұрын
По ссылке на репозиторий (Код из видео) - Not Found.
@Acid31337
@Acid31337 3 жыл бұрын
тестирование асинхронных операций это конечно сложно. Но если замокать XHR/fetch/setTimeout/setInterval/Promise, то можно контролировать завершение всех асинхронных операций, и сделать функцию waitAllAsynchronous() наверняка будет куча проблем, например промисы нельзя все замокать, их async-функции порождают. Можно зато дождаться их всех с помощью setImmediate
@JavaScriptNinja
@JavaScriptNinja 3 жыл бұрын
Это не решит указанной проблемы
@vitiok78
@vitiok78 3 жыл бұрын
Почему бы в Jest не сделать дополнительную функцию mockStrict, чтобы пользователь сам выбирал уровень строгости, который ему нужен?
@vadiiimyeeeekn
@vadiiimyeeeekn 2 жыл бұрын
В конце видео не понял, чем вторая половина проблемы отличается от первой: в первой мы используем глубокое копирование для защиты теста от мутации аргумента ("зашли внутрь объекта, который нам передали", это тоже не совсем понял)? А вторая половина про изменение "аргументов функции, с которыми были вызваны и которыми мы больше не управляем". Где разница между этими половинами?
@rah_emil
@rah_emil 2 жыл бұрын
С тобой спокойно на скорости x2 смотрю😂👍
@Lampa303
@Lampa303 3 жыл бұрын
А Object.freeze() не поможет для предотвращения мутаций между вызовами?
@JavaScriptNinja
@JavaScriptNinja 3 жыл бұрын
Не поможет, потому что вызов происходит внутри entry.js, мы там не управляем
@alfers9571
@alfers9571 3 жыл бұрын
Вот это ничего себе нюансик. Думаешь что у тебя всё ок, а нет тебя jest обманул, спасибо, полезно!
@AntonLyachek
@AntonLyachek 3 жыл бұрын
Спасибо за видео, но ссылка на репозиторий с кодом не работает, gitlab отвечает 404
@vasylnahuliak
@vasylnahuliak 2 жыл бұрын
Цікаво чи є така "помилка" в інших тест ранерах, наприклад ava. Можливо її обійшли іншим чином, бо получається неочевидно
@JavaScriptNinja
@JavaScriptNinja 2 жыл бұрын
Так, майже скрізь
@horhoj29homefreeman95
@horhoj29homefreeman95 3 жыл бұрын
Объясните новичку(в процессе изучения js). Итак файл entry.js, строка 15, напрямую используем save без инжектирования. Насколько я понимаю именно эта строка, делает необходимым использование jest.mock. Вопрос: почему не инжектировать этот метод в конструктор, а для создания объекта Entry в реальном коде использовать фабрику entryFactory, которая бы создавала объект Entry и инжектировала в него при создании функцию save? Тогда насколько я понимаю в тесте, нам бы не пришлось использовать jest.mock, так как мы могли бы вместо него передать в создаваемый объект Entry любую функцию. Т.е. В этом случае класс Entry бы не имел внешних зависимостей. ПОчему я задаю такой вопрос? Все дело в том, что в js все используют импортированные зависимости напрямую (ну по крайней мере тот код который я видел), без инжектирования(а в тестах потом мокают). И раз все так делают, я пришел к выводу, что я чего то не понимаю в js. Вот и вопрос собственно: а почему все так делают? это какая то особенность js? или это делают для экономии времени? Под словом инжектирование я подразумеваю патерн depency injection(прошу прощения если ошибся в терминологии).
@JavaScriptNinja
@JavaScriptNinja 3 жыл бұрын
Вопрос - а зачем внедрять di? (Я знаю все ответы про тестируемость и так далее) DI про зависимость от интерфейса а не от реализации. Интерфейсов нет. Зачем городить ещё одну иерархию сложности?
@horhoj29homefreeman95
@horhoj29homefreeman95 3 жыл бұрын
@@JavaScriptNinja Ну я почти к такому же выводу пришел. Благодарю за разъяснение.
@fnShun
@fnShun 3 жыл бұрын
Сегодня столкнулся с этой проблемой (второй день с Jest)
@VasiliyZCFDVanchuck
@VasiliyZCFDVanchuck 3 жыл бұрын
Object.assign зло - как ведут себя тесты без мутации?
@JavaScriptNinja
@JavaScriptNinja 3 жыл бұрын
Точно так же. Вернее конкретно этот тест скорее всего сломается, но замените assign на push в массив и все :)
@cikada3398
@cikada3398 3 жыл бұрын
Когда следующий мастер класс по тестированию?
@JavaScriptNinja
@JavaScriptNinja 3 жыл бұрын
Ближайший год думаю не будет. Все что надо я рассказал, можно приобрести запись
@cikada3398
@cikada3398 3 жыл бұрын
@@JavaScriptNinja Понял, добро
@rinatvaliullov3247
@rinatvaliullov3247 3 жыл бұрын
Так кто виноват, люди или JS? )
@KybaLioN66
@KybaLioN66 3 жыл бұрын
какой шрифт в vscode ?
@JavaScriptNinja
@JavaScriptNinja 3 жыл бұрын
PragmataPro
@KybaLioN66
@KybaLioN66 3 жыл бұрын
@@JavaScriptNinja спасибо
@botyaslonim
@botyaslonim 2 жыл бұрын
Две разных сущности названы одним именем save, не очень наглядно
@oleksandrtsymbaliuk4167
@oleksandrtsymbaliuk4167 2 жыл бұрын
Ну то есть суть не столько в джесте, сколько в коде, точнее в асинхроне джес
@eugenevasiltsov4681
@eugenevasiltsov4681 3 жыл бұрын
Page Not Found gitlab.com/javascript-ninja/demos/jest-everybody-lies открой пожалуйста доступ =)
@egorkomarov4719
@egorkomarov4719 3 жыл бұрын
Это не похоже на курс по vue 3
@JavaScriptNinja
@JavaScriptNinja 3 жыл бұрын
А кто сказал что на канале будут материалы только по вью?
@user-ct3wr2vr9n
@user-ct3wr2vr9n 3 жыл бұрын
@@JavaScriptNinja Так вроде сегодня же первое видео планировалось по vue. Не сегодня?
@JavaScriptNinja
@JavaScriptNinja 3 жыл бұрын
@@user-ct3wr2vr9n сегодня
@nike_wht
@nike_wht 3 жыл бұрын
@@JavaScriptNinja ждём )
@user-ct3wr2vr9n
@user-ct3wr2vr9n 3 жыл бұрын
@@JavaScriptNinja супер)
@sevi43
@sevi43 3 жыл бұрын
Название прям байт)
@JavaScriptNinja
@JavaScriptNinja 3 жыл бұрын
"jest-mock сохраняет аргументы вызовов по ссылке" было бы слишком просто. Никакой интриги :)
@sevi43
@sevi43 3 жыл бұрын
@@JavaScriptNinja TL; DR; который мы заслуживаем
@life_on_fire
@life_on_fire 3 жыл бұрын
Главное что это не про презентованный курс по вью)
@alexandertikhonov4389
@alexandertikhonov4389 3 жыл бұрын
Боль работы программистом
Учись реальности!
23:17
JavaScript.Ninja
Рет қаралды 29 М.
Русалка
01:00
История одного вокалиста
Рет қаралды 7 МЛН
아이스크림으로 체감되는 요즘 물가
00:16
진영민yeongmin
Рет қаралды 58 МЛН
Clown takes blame for missing candy 🍬🤣 #shorts
00:49
Yoeslan
Рет қаралды 31 МЛН
100❤️
00:19
MY💝No War🤝
Рет қаралды 23 МЛН
Mocking Asynchronous Functions with Jest
21:50
Swashbuckling with Code
Рет қаралды 68 М.
React, Jest та Тестування.
51:20
Курс React для початківців від Vitalii Ruban
Рет қаралды 1,9 М.
Чего ожидать от HTTP/3 + Go
51:07
Нина Пакшина
Рет қаралды 3,1 М.
Тестирование React приложения
1:03:02
Михаил Непомнящий
Рет қаралды 62 М.
Test-Driven Development // Fun TDD Introduction with JavaScript
12:55
89 - Тесты, jest, tdd, тестируем reducer - React JS
27:59
Mock vs Spy in Testing with Jest: Which is Better?
25:12
Dev tips by MoHo
Рет қаралды 10 М.
Тестирование React-компонентов с Redux
19:33
Михаил Непомнящий
Рет қаралды 14 М.
Русалка
01:00
История одного вокалиста
Рет қаралды 7 МЛН