Як перевірити один файл за допомогою 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.