Могу ли я запустить Jest через Angular CLI?

Я настроил свое приложение Angular 6 для запуска тестов с помощью Jest при запуске «npm run test». Это прекрасно работает. Я хотел бы иметь возможность запускать те же тесты при выполнении «ng test». Можно ли настроить Angular CLI для этого?


person ilancohen    schedule 10.06.2018    source источник
comment
Я думаю, вы ищете этот github.com/meltedspark/angular-builders /дерево/мастер/пакеты/   -  person Skorunka František    schedule 18.09.2018


Ответы (1)


Я настоятельно рекомендую использовать построитель Jest, если вы хотите переключиться в Jest в вашем проекте Angular CLI. У нас только что была миграция с Karma на Jest в одном из наших проектов, это сработало как по маслу. Для справки, вот минимальные шаги для переключения на Jest в новом проекте:

  1. Создать проект

    $ ng new myapp
    $ cd myapp
    
  2. Удалите зависимости Karma, файл конфигурации и test.ts:

    $ yarn remove karma karma-chrome-launcher karma-coverage-istanbul-reporter karma-jasmine karma-jasmine-html-reporter
    $ rm src/karma.conf.js src/test.ts
    
  3. Установите Jest Builder, создайте файл конфигурации:

    $ yarn add --dev jest @angular-builders/jest
    $ touch src/jest.config.js
    
  4. Переключитесь на commonjs в src/tsconfig.spec.json:

    {
      "extends": "../tsconfig.json",
      "compilerOptions": {
        "outDir": "../out-tsc/spec",
        "module": "commonjs",
        "types": [
          "jasmine",
          "node"
        ]
      },
      "include": [
        "**/*.spec.ts",
        "**/*.d.ts"
      ]
    }
    
  5. Переключитесь на конструктор Jest в angular.json:

    {
      ...
        "test": {
          "builder": "@angular-builders/jest:run",
          "options": {
            "styles": [
              "src/styles.css"
            ],
            "scripts": [],
            "assets": [
              "src/favicon.ico",
              "src/assets"
            ]
          }
        },
      ...
    }
    

Теперь вы будете запускать тесты с помощью Jest:

$ ng test
 PASS  src/app/app.component.spec.ts
  AppComponent
    ✓ should create the app (223ms)
    ✓ should have as title 'myapp' (80ms)
    ✓ should render title in a h1 tag (70ms)

Test Suites: 1 passed, 1 total
Tests:       3 passed, 3 total
Snapshots:   0 total
Time:        3.704s
Ran all test suites.
person hoefling    schedule 10.01.2019
comment
только небольшая поправка. Используйте правильные типы в tsconfig.spec.json. В массиве "types" вместо "jasmine","node" должно быть только jest. - person Aditya Vikas Devarapalli; 10.06.2020