Сегодня мы рады анонсировать 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, чтобы узнать больше и связаться с нами.