Как проверить один файл с помощью Jest?
Я могу проверить несколько файлов с помощью Jest, но я не могу понять, как протестировать один файл.
У меня есть:
- Выполнить
npm install jest-cli --save-dev
- Обновлено
package.json
: `{... "scripts": { "test": "jest" }...}
- Написано несколько тестов.
Запуск npm test
работает как ожидалось (в настоящее время он запускает 14 тестов).
Как проверить один файл, например. test 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'
Спасибо
Ответы
Ответ 1
Для запуска конкретного теста вам нужно будет использовать команду jest
. npm test
не будет работать. Чтобы получить доступ к jest
непосредственно в командной строке, установите его через npm я -g jest-cli
или npm я -g jest-cli
yarn global add jest-cli
.
Затем просто запустите свой конкретный тест с помощью jest bar.spec.js
Примечание. Вам не нужно вводить полный путь к тестовому файлу. Аргумент интерпретируется как регулярное выражение. Достаточно любой части полного пути, которая однозначно идентифицирует файл.
Ответ 2
Все, что вам нужно сделать, это повторять заклинание магии:
npm test -- SomeTestFileToRun
Автономный --
- это * nix magic для обозначения конца опций, что означает (для NPM), что все, что после этого передается выполняемой команде, в данном случае jest
. Кроме того, вы можете отобразить примечания по использованию шутки, сказав
npm test -- --help
Во всяком случае, пение
npm test -- Foo
запускает тесты в именованном файле (FooBar.js
). Вы должны отметить, что:
Jest рассматривает имя как регистрозависимое, поэтому, если вы используете регистронезависимую, но сохраняющую регистр файловую систему (например, Windows NTFS), вы можете столкнуться с тем, что кажется странным.
Похоже, Jest рассматривает спецификацию как префикс.
Таким образом, вышеприведенное заклинание будет
- Запустите
FooBar.js
, Foo.js
и FooZilla.js
- Но НЕ беги
foo.js
Ответ 3
Чтобы выполнить индивидуальный тест:
ValidationUtil свой модуль ValidationUtil.spec.js
npm test -t ValidationUtil
-t → после размещения регулярного выражения, содержащего тестовое имя
Ответ 4
Использование npm test
не означает, что jest устанавливается глобально. Это просто означает, что "тест" сопоставляется с использованием jest в вашем пакете. Json
Следующее - это то, что сработало для меня на корневом уровне проекта:
node_modules/.bin/jest [args]
args может быть тестовым файлом, который вы хотите запустить, или каталогом, содержащим несколько файлов.
Ответ 5
если вы используете yarn
, вы можете добавить файл .spec.js
или .test.js
непосредственно после:
yarn test src/lib/myfile.test.js
Это часть моего package.json
с установкой jest в качестве локального пакета (удалены соответствующие части):
{
...
"scripts": {
"test": "jest",
"testw": "jest --watch",
"testc": "jest --coverage",
...
},
"devDependencies": {
"jest": "^18.1.0",
...
},
}
Ответ 6
Если вы используете npm >= 5.2.0
и вы установили jest локально как devDependencies
с помощью npm я -d jest
вы можете запустить jest для определенного файла, выполнив npx jest/path/to/your/spec.js
Ответ 7
Вот как я динамически запускаю тесты для конкретного файла без перезапуска теста. Мой реактивный проект был создан был 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
Вот как я запускаю тесты для конкретного файла.
Ответ 8
Я просто установил jest как глобально, а затем запустил jest myFileToTest.spec.js
и это сработало
Ответ 9
У вас есть два варианта:
- Вариант 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 Code, у вас есть отличный плагин для этого: Jest Runner. Это позволяет вам не только запускать тесты файл за файлом, но даже конкретные комплекты и спецификации, просто щелкнув правой кнопкой мыши на тестах, которые вы хотите запустить.
Ответ 10
Jest будет использовать то, что вы передаете в качестве шаблона регулярных выражений. Это будет соответствовать.
Если вы хотите запустить определенный тестовый файл. Тогда лучший способ сделать это - указать полный путь к нему. (Вы можете слишком точно указать определенный относительный путь, например (src/XFolder/index.spec.ts)).
Самый простой способ указать полный путь в каталоге и в linux:
jest $PWD/index.spec.ts
Обратите внимание на использование переменной $ PWD.
![enter image description here]()
Для окон! (быть обновленным)