Як перевірити один файл за допомогою Jest?


359

Я можу протестувати кілька файлів за допомогою Jest, але не можу зрозуміти, як протестувати один файл.

Я маю:

  • Біжи npm install jest-cli --save-dev
  • Оновлено package.json: `{..." script ": {" test ":" jest "} ...}
  • Написав ряд тестів.

Виконання npm testробіт, як очікувалося (зараз він виконує 14 тестів).

Як перевірити один файл, наприклад тест app/foo/__tests__/bar.spec.js?

Я спробував запустити npm test app/foo/__tests__/bar.spec.js(з кореня проекту), але отримав таку помилку:

npm ERR! Error: ENOENT, open '<path to project>/node_modules/app/foo/__tests__/bar.spec.js/package.json'

Дякую

Відповіді:


296

Для того, щоб запустити певний тест, вам потрібно буде використовувати jestкоманду. npm testне вийде. Щоб отримати доступ jestбезпосередньо в командному рядку, встановіть його через npm i -g jest-cliабо yarn global add jest-cli.

Потім просто запустіть свій конкретний тест за допомогою jest bar.spec.js.

Примітка . Вам не потрібно вводити повний шлях до тестового файлу. Аргумент трактується як регулярний вираз. Будь-яка частина повного шляху, яка однозначно ідентифікує файл, достатня.


5
На жаль, це не працює для мене. Біг jest bar.spec.jsдає jest: command not found. Я підтвердив, що Jest встановлений ( npm list -g jestпоказує jest@0.1.37). FWIW, коли я запускаю npm testйого, використовує jest-cli.
Мускет

4
Так, jest-cliце правильний модуль, встановити його в усьому світі npm install -g jest-cli. jestу npm - це ... щось інше
ncuillery

56
Це неправильно. npm test тестування не означає, що жарт встановлена ​​в усьому світі. Це просто означає, що жарт встановлена ​​у вашому проекті.
Chiedo

20
Як сказав @ChiedoJohn. Щоб запустити його без глобальної установки, ви можете запустити це з кореня програми:node_modules/.bin/jest args
Едді Монж, молодший

3
Якщо ви використовуєте налаштування жасмину за замовчуванням, ви можете зосередити один тест, використовуючи fitзамість it.
eremzeit

380

Все, що вам потрібно зробити, - це сканувати заклинання магії:

npm test -- SomeTestFileToRun

Автономна --магія * nix магія для позначення кінця параметрів, тобто (для NPM), що все після цього передається команді, що виконується, в даному випадку jest. В сторону ви можете відображати жартівливі замітки про використання, кажучи

npm test -- --help

У всякому разі, скандування

npm test -- Foo

запускає тести в іменованому файлі ( FooBar.js). Слід зазначити, що:

  • Jest трактує це ім'я як чутливе до регістру, тому якщо ви використовуєте нечутливу до регістру, але файлову систему, що зберігає регістр (як Windows NTFS), ви можете зіткнутися з тим, що, як видається, відбувається дивацтвом.

  • Здається, Jest трактує специфікацію як префікс.

Отже, вищезазначений заклик буде

  • Біжи FooBar.js, Foo.jsіFooZilla.js
  • Але НЕ бігати foo.js

Дякую, на жаль, я отримую таку ж помилку при виконанні цього:npm ERR! Error: ENOENT, open '<path to project>/node_modules/<name of file>/package.json'
Musket

1
чи існує якийсь альтернативний метод для запуску прикольних тестів крім командного рядка ?? , як якщо б я зробив поштовий запит у моєму існуючому проекті спочатку api, це дасть мені проблему з токеном CSRF. Як я можу налаштувати тестування для мого існуючого проекту ?? так що він почне подавати запит, використовуючи '/ rest-api' замість ' localhost: 8000 / rest-api '
Suyog Sawant

@SuyogSawant: це не коментар. це питання самостійно. Вам слід запитати його тут на StackOverflow.
Ніколас Кері

1
в моєму випадку просто npm test ToDoForm.test.jsпрацювало, поки jest ToDoForm.test.jsне було
Томаш Муларчик

ваш другий пункт щодо чутливості до регістру не відповідає заклику, який ви вказали вище.
NSjonas

38

Для проведення індивідуального тесту:

npm test -t ValidationUtil # `ValidationUtil` its my module `ValidationUtil.spec.js`

-t- після нього ставлять регулярний вираз, що містить назву тесту.


1
Дивовижно! Працювали чудово!
Флавіо

21

Використання npm test не означає, що жарт встановлюється у всьому світі. Це просто означає, що "тест" відображається за допомогою прикмет у вашому пакеті.json

Далі те, що працювало для мене, на кореневому рівні проекту:

node_modules/.bin/jest [args]

args можуть бути тестовим файлом, який ви хочете запустити, або каталогом, що містить кілька файлів.


Працював для мене;)
wogsland

1
Дякую! це було дуже корисно для мене!
Ісаак

5
ярлик для виконання бінарних файлів node_modules/.bin- це використання npxкоманди. Наприкладnpx jest [args]
Серхіо Маццолені

16

якщо ви використовуєте, yarnви можете додати файл .spec.jsабо .test.jsфайл безпосередньо після:

yarn test src/lib/myfile.test.js

Це частина з моєї package.jsonвстановлення з приємною установкою як локальний пакет (видалено відповідні частини):

{
...
  "scripts": {
    "test": "jest",
    "testw": "jest --watch",
    "testc": "jest --coverage",
...
  },
  "devDependencies": {
    "jest": "^18.1.0",
    ...
  },

}


6

Якщо ти працюєш npm >= 5.2.0 і ви встановили джей локально, як devDependenciesз, npm i -d jestви можете запускати жарти на певному файлі, виконуючи діїnpx jest /path/to/your/spec.js


5

Ми використовуємо nrwl-nx з кутовим . У цьому випадку ми можемо використовувати цю команду:

npm test <ng-project> -- --testFile "file-name-part"

примітки:

  • npm testзапустить тестовий скрипт, вказаний у package.json: "test:client": "ng test client"
  • таким чином, решта cmd буде передана на ng-тест
    • <ng-project> - назва проекту в angular.json
      • коли ви опустите цей параметр, буде використано "defaultProject"(вказане в angular.json) (тому його потрібно вказати, коли тест не є у вашому проекті за замовчуванням)
    • далі ми повинні перевірити, який будівельник використовується:
      • в angular.jsonнавігації до "project"- "<ng-project>"- "architect"-"test"
      • і перевірте "builder", що в нашому випадку є:"@nrwl/jest:jest"
    • Тепер, коли ми знаємо будівельника, нам потрібно знайти доступні параметри cmd-рядка
      • у командному рядку запустіть, npm test server -- --helpщоб побачити всі доступні параметри
      • або перевірити онлайн-документи
    • Один із варіантів - це те, --testFileщо тут використовується

Це той, хто зробив це для мене, тому що ми використовуємо nx. Дякую.
користувач906573

4

Так я динамічно запускаю тести на конкретний файл, не перезавантажуючи тест. Мій проект реагування був створений бувcreate-react-app

тому він стежить за тестом на зміни, автоматично виконує тест, коли я вношу зміни.

Отже, це я бачу в кінці результатів тестів на терміналі.

Test Suites: 16 passed, 16 total
Tests:       98 passed, 98 total
Snapshots:   0 total
Time:        5.048s
Ran all test suites.

Watch Usage: Press w to show more.

Натисніть W

Watch Usage
  Press f to run only failed tests.
  Press o to only run tests related to changed files.
  Press q to quit watch mode.
  Press p to filter by a filename regex pattern.
  Press t to filter by a test name regex pattern.
  Press Enter to trigger a test run.

потім натисніть кнопку P

Pattern Mode Usage
  Press Esc to exit pattern mode.
  Press Enter to filter by a filenames regex pattern.

 pattern 

 Start typing to filter by a filename regex pattern.

це після того, як я захотів запустити файл 'index.es6.js' у папці 'Вхід'

Pattern Mode Usage
  Press Esc to exit pattern mode.
  Press Enter to filter by a filenames regex pattern.

 pattern  login/index

 Pattern matches 1 file
  src/containers/Login/index.es6.test.js

Ось як я запускаю тести на конкретний файл.



1

Я просто встановив жарт як глобально, а потім побіг, jest myFileToTest.spec.jsі це спрацювало


1

У вас є два варіанти:

  • Варіант 1: Командний рядок. Можна виконати таку команду
node '/Users/complete-path-to-you-project/your-project/node_modules/.bin/jest' '/Users/complete-path-to-you-project/your-project/path-to-your-file-within-the-project/your-file.spec.ts'

Це дозволяє уникнути установки Jest у всьому світі. Ви використовуєте жарт, використаний у вашому проекті.

  • Варіант 2: Якщо ви використовуєте код VS, у вас є чудовий плагін для цього: Jest Runner . Це дозволяє не тільки запускати тестові файли по файлам, але навіть конкретні набори та характеристики лише натисканням правої кнопки миші на тести, які ви хочете запустити.

0

Jest використовуватиме те, що ви передаєте, як шаблон регулярного виразів . Це буде відповідати.

Якщо ви хочете запустити певний тестовий файл. Тоді найкращий спосіб зробити це - точний повний шлях до нього. (Ви можете занадто точно визначити певний відносний шлях, наприклад (src / XFolder / index.spec.ts)).

Найпростіший спосіб забезпечити повний шлях, що знаходиться в каталозі та в Linux, це:

jest $PWD/index.spec.ts

Зверніть увагу на використання змінної $ PWD .

введіть тут опис зображення

Для вікон! (оновлюється)


0

За допомогою Angular та Jest ви можете додати це до package.json у розділі "скрипти"

"test:debug": "node --inspect-brk ./node_modules/jest/bin/jest.js --runInBand"

Потім для запуску одиничного тесту для конкретного файлу ви можете написати цю команду у свій термінал

npm run test:debug modules/myModule/someTest.spec.ts

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.