О, да. Опыт разработчиков с Jest превращает процесс написания тестов из рутины в адское веселое времяпрепровождение, обещаю! 🤓
Этот пост является продолжением моего предыдущего поста о Jest’s Framework:
Логотип
Ой, логотип. Разве это не хорошо?
Как будто пытается сказать тебе: «Ты собираешься писать тесты? это будет весело! »
И именно так это завлекает тебя
Хорошо, но если серьезно, мне просто нужен элемент слева, чтобы выровнять остальные элементы. Прости меня 🤷.️
Анекдот о логотипе, если хотите -
Недавно я узнал, что логотип Jest был создан в последнюю минуту на наброске Джеймсом Пирсом, где он повторил несколько вариантов (ссылка в твиттере), но более забавно Кристоф Наказава упомянул, что… круги, расположенные рядом друг с другом, напоминают ему загрузочную анимацию, которая коррелирует с медлительностью :-)
Визуальные различия и эффективная многословность
Большая часть хорошего опыта разработчика - это повышение вашей продуктивности.
Когда дело доходит до тестирования, когда тесты терпят неудачу, вы хотите быстро определить, что пошло не так с тестом.
Возьмем, к примеру, этот фрагмент кода:
В исходном коде теста есть опечатка.
Вот как Jest покажет ошибку в консоли:
Он предоставляет отличный контекст для фактического файла, номера строки и стрелок, указывающих на точную проблему, а также окрашивает код подсветкой синтаксиса.
Собираетесь ли вы сравнивать два объекта в своих утверждениях?
Нет проблем. Jest настолько многословен, что покажет отличное различие даже для вложенных ключей, которые различаются между объектами, которые вы сравниваете:
примечание: Jest был сделан очень модульным, и многие его возможности были перенесены в отдельные модули, которые может использовать сообщество.
Если вам нравится приведенное выше различие, вы можете использовать его в своем собственном проекте, см. Здесь: http://jestjs.io/docs/en/jest-platform.html#jest-diff
Расслабляющие условности
Соглашения о тестовых наборах
Если вы работаете с разными участниками тестирования или фреймворками, вы знаете, что они различаются по синтаксису наборов тестов.
Некоторые используют describe.only (), в других можно использовать только test ().
В некоторых из них вы отключаете тест с помощью test.skip (), а в других - xit ().
С Jest это не имеет значения.
Он делает все возможное, чтобы оптимизировать продуктивность, вместо строгих соглашений.
Вы можете написать test () или вложенные описать () и test (), или просто используйте it ().
Понятно.
Какое соглашение об именах файлов следует использовать для тестов?
Какая разница! 😜
Jest автоматически подберет любые расширения файлов * .test.js или * .spec.js. как любые файлы в каталоге __tests__.
Дружественный интерфейс командной строки
У Jest есть удобный интерфейс командной строки, который поможет вам понять, что вы имеете в виду под спагетти-пальцами:
Конечно, это не путешествие во времени, а еще один краеугольный камень в повышении производительности и дружелюбности Jest к разработчикам.
Самое главное - это мелочи.
Тестовые пары
В автоматизированном тестировании, когда мы пишем и выполняем модульные и интеграционные тесты, обычной практикой является использование различных типов тестовых двойников для изоляции различных частей системы.
Существуют разные методы изоляции с разными целями и поведением, но все они вместе называются тестовыми двойниками.
В то время как другие библиотеки, такие как Sinon, требуют от вас явного объявления и выбора типа тестового двойника для вашего теста (заглушка, макет, шпион), Jest объединяет все в единую точку входа, называемую Mock-объектом (jest.fn) .
Доступ к Mock и его использование по-разному осуществляется через тестовый код, но, по сути, вам не нужно беспокоиться о таких решениях в своем тестовом коде относительно типов тестовых двойников. Это еще одно повышение производительности с Jest.
Тем не менее, вы все равно должны понимать принципы тестирования.
Рекомендуемая литература о Test Doubles в блоге Мартина Фаулера: https://martinfowler.com/bliki/TestDouble.html
Иммерсивный режим просмотра
Некоторые преимущества режима просмотра Jest, который упрощает рабочий процесс разработки:
- Очевидное - мгновенный запуск тестов по мере появления изменений (в среде IDE или, скажем, вы переключаете ветку).
- Jest решает, какие тесты запускать автоматически.
Он управляет метаданными исходного кода, чтобы узнать, как запускать только соответствующие тестовые файлы при изменении файла исходного кода. - В интерактивном режиме просмотра Jest вы увидите, фильтруете ли вы файлы любого типа. Например, если вы запустили jest с определенным путем к глобу, он отобразит его как активный фильтр:
- Больше не тестируйте test.only (), вставляя его в ваш тестовый код и случайно попадая в ваш PR. С помощью Jest вы можете легко отфильтровать тестовый запуск по имени файла или имени теста прямо из консоли. Поэтому просто отфильтруйте тест по имени, и только он будет запускаться повторно всякий раз, когда вы вносите изменения в тестовый файл:
Еще кое-что, что вам следует знать о средстве выполнения тестов:
- Jest сначала запускает самые медленные тесты, чтобы оптимизировать параллельную работу ЦП и сократить общее время выполнения теста.
- Jest сначала запустит тесты, которые ранее не давали результата, чтобы обеспечить быструю обратную связь.
- Jest выберет порядок запуска тестов, поэтому вам определенно не следует ожидать, что они будут запускаться в алфавитном порядке или каким-либо другим способом.
Для вас они запускаются совершенно случайным образом, и было бы плохой практикой иметь тестовые файлы с именем 01_loginFucntions.spec.js, 02_createUsers.spec.js.
Итак, что вам нравится в опыте разработчиков при использовании Jest?