Сегодня мы рады анонсировать Nx 6.3, в котором есть возможность использовать Jest для модульного тестирования!
Nx - это набор расширяемых инструментов разработки для монорепозиториев, который мы в Nrwl разработали на основе нашего опыта работы в Google и помогая Fortune 500 создавать амбициозные приложения Angular.
Поддержка Jest
В Nx 6.3 появилась возможность использовать Jest для запуска модульных тестов вместо Karma. Jest - это средство запуска тестов с открытым исходным кодом, созданное Facebook. Он используется внутри Facebook, а также во многих других корпоративных проектах и проектах с открытым исходным кодом, включая сам Nx!
Зачем использовать Jest?
Представление
Jest является БЫСТРЫМ и позволяет разработчикам быстрее проверять свои изменения и тратить больше времени на разработку функций. К сожалению, после этих улучшений производительности во время тестирования может не хватить времени для перерывов на кофе. Jest делает несколько вещей, отличных от кармы, что делает его значительно более производительным вариантом:
- Тесты выполняются в Node, поэтому Jest не требует запуска браузера.
- Тесты можно запускать параллельно и грамотно планировать
- Тесты могут быть изолированы на основе незафиксированных изменений
В качестве эксперимента было создано и протестировано 100 библиотек с использованием Karma и Jest. Карма заняла около 15 минут, а Шутка закончилась всего за 4 минуты! Тесты, выполняемые в этом эксперименте, идентичны для двух участников тестирования, что означает, что разница связана с различиями между двумя участниками тестирования. Однако у каждой библиотеки был только один тест, поэтому большая часть различий, наблюдаемых в этом эксперименте, заключается во времени настройки, а не в скорости, с которой они запускают тесты. Ваши результаты могут отличаться, но мы уверены, что общая производительность улучшится.
Совместимость с монорепозиториями
Подобно рабочему пространству Nx, Facebook использует огромный монорепозиторий, содержащий весь их код JavaScript. Jest построен с учетом использования в монорепозиториях, и это основная причина, по которой мы думаем, что он станет хорошей альтернативой K arma в рабочей области Nx.
Множество других причин
Есть много других причин, по которым Jest - хороший инструмент для выполнения тестов. Ниже приведен список еще некоторых:
- Полезная отчетность
- Иммерсивный режим просмотра
- Тестирование снимков
- Мощное издевательство
- Отчеты о покрытии кода
Характеристики покрытия тоже впечатляют. Это дает вам красивый и простой рендеринг прямо в консоли после запуска команды покрытия и стандартных отчетов LCOV.
Посетите официальный сайт Jest, чтобы узнать больше о Jest!
Как использовать шутку
Чтобы использовать Jest, сначала мы должны добавить некоторую конфигурацию и установить необходимые зависимости через:
ng generate jest
Из-за критического изменения транзитивной зависимости вам также может потребоваться обновить jest-preset-angular до версии 6.0.1. Это будет сделано автоматически при переходе на Nx 6.4.
После этого мы готовы создать новый проект, который использует jest для модульного тестирования. Рабочее пространство Nx может содержать проекты, протестированные с помощью шутки, наряду с проектами, протестированными с помощью кармы. Сначала Jest доступен только для библиотек, но вскоре будет доступен и для приложений. Создайте новую библиотеку, которая использует jest для модульного тестирования, с помощью:
ng generate lib libname --unit-test-runner jest
Чтобы использовать jest для существующего проекта, удалите цель test из angular.json, а также связанные файлы, такие как karma.conf.js , test.ts и tsconfig.spec.json. Обратите внимание, не удаляйте файлы спецификаций. Затем добавьте шутку в проект, используя:
ng generate jest-project --project existing-lib
Тестирование библиотеки, использующей шутку, практически идентично тому, как это делается сегодня. Протестируйте библиотеку с помощью jest через:
ng test libname
Проекты, протестированные с помощью jest, также можно протестировать с помощью затронутых через:
yarn affected:test --base=master
Ниже приведены некоторые расширенные варианты использования шутки в рабочей области Nx:
# List all options which can be used with jest through the CLI ng test libname --help # Run jest’s interactive watch mode for a single project ng test libname --watch # Generate coverage reports ng test libname --code-coverage # Isolate tests which are affected by uncommitted files ng test libname --onlyChanged # Re-record failing snapshots during this test run ng test libname --updateSnapshots # Isolate tests which are affected by uncommitted files in all affected projects yarn affected:test --base=master --onlyChanged # or (if you are using npm) npm run affected:test -- --base=master --onlyChanged
Быстрый старт по использованию Nx
Создание новой рабочей области
Установите новую версию Nx и создайте рабочую область myorg, запустив:
yarn global add @nrwl/schematics create-nx-workspace myorg --yarn # or (if you are using npm) npm install -g @nrwl/schematics create-nx-workspace myorg
Добавить Nx в существующее рабочее пространство Angular CLI
Чтобы добавить Nx поверх существующей рабочей области Angular CLI 6.x, выполните следующее.
ng add @nrwl/schematics
Обновление существующей рабочей области Nx
Если вы уже используете Nx 6.0, обновите рабочее пространство до Nx 6.3, выполнив следующее.
ng update @nrwl/[email protected] # If you are already on Nx 6.1, you can also use yarn update # or (if you are using npm) npm run update
Обновление с Nx 1.x
Если вы уже являетесь пользователем Nx 1.x, вы можете выполнить обновление, предварительно установив последнюю версию Nrwl Nx через:
yarn add @nrwl/schematics@latest --dev yarn update # or (if you are using npm) npm install @nrwl/schematics@latest --save-dev npm run update
Специальная благодарность
Мы хотели бы выразить особую благодарность следующим людям, которые также внесли свой вклад в этот выпуск:
Сообщите нам свое мнение
Если у вас возникли проблемы с Nx, сообщите о них на нашем GitHub.
Учить больше
Nx 6.2: Angular 6.1 и улучшенное управление состоянием
Видеокурс по использованию Nx Workspaces
Если ваша компания или команда испытывают трудности с архитектурой и разработкой приложений Angular в любом масштабе, команда Nrwl может вам помочь! Посетите https://nrwl.io, чтобы узнать больше и связаться с нами.