У меня есть тест «работает с вложенными детьми» в файле fix-order-test.js.
Запуск ниже запускает все тесты в файле.
jest fix-order-test
Как мне запустить только один тест? Ниже не работает, поскольку он ищет файл указанного регулярного выражения.
jest 'works with nested children'
--testNamePattern
'works with nested children'
Jest CLI Options #testNamePatternОтветы:
Из командной строки используйте флаг
--testNamePattern
или-t
Это будет запускать только те тесты, которые соответствуют заданному вами шаблону имени. Это в Jest Docs .
Другой способ - запустить тесты в режиме наблюдения,
jest --watch
а затем нажать, pчтобы отфильтровать тесты, введя имя файла теста или tзапустить одно имя теста.Если у вас
it
внутриdescribe
блока, вы должны запуститьисточник
it()
функции, а не имени файла. О чем я и думал.npm test -- -t "fix order test"
./node_modules/.bin/jest --config=./.jest.config.json ./src/x/y/sites.js/sitesWorker.test.js -t 'given only incorrect sites'
Документация Jest рекомендует следующее:
или
источник
test.only
. Так что если вы только хотите , чтобы запустить один тест в файл , который имеет множество тестовых случаев в пределах набора testcases , который состоит из множества файлов вы должны , к сожалению , работать , что один файлjest myTestFile.test.js
npm test
. Вам нужно будет запустить файл самостоятельно или нажать,p
чтобы установить фильтр.Как упоминалось в других ответах,
test.only
просто отфильтровывает другие тесты в том же файле . Таким образом, тесты в других файлах все равно будут выполняться.Итак, для запуска одного теста есть два подхода:
Вариант 1. Если ваше имя теста является уникальным, вы можете ввести его
t
в режиме просмотра и ввести имя теста, который вы хотите запустить.Вариант 2:
p
в режиме просмотра, чтобы ввести регулярное выражение для имени файла, которое вы хотите запустить. (Соответствующие команды, подобные этой, отображаются при запуске Jest в режиме просмотра).it
кit.only
на тест вы хотели бы работать.При любом из указанных выше подходов Jest запускает только один тест в указанном вами файле.
источник
Полная команда для запуска одного теста Jest
Команда:
node <path-to-jest> -i <you-test-file> -c <jest-config> -t "<test-block-name>"
<path-to-jest>
:node_modules\jest\bin\jest.js
node_modules/.bin/jest
-i <you-test-file>
: путь к файлу с тестами (js
илиts
)-c <jest-config>
: путь к отдельному файлу конфигурации Jest (JSON), если вы сохраняете свою конфигурацию Jest,package.json
вам не нужно указывать этот параметр (Jest найдет его без вашей помощи)-t <the-name-of-test-block>
: На самом деле это имя (первый параметр) изdescribe(...)
,it(...)
илиtest(...)
блока.Пример:
Итак, команда
node node_modules/jest/bin/jest.js -i test/math-tests.js -c test/tests-config.json -t "1 + 1 = 2"
будет проверять
it("1 + 1 = 2", ...)
, но если вы измените-t
параметр на,"math tests"
то он будет запускать оба теста изdescribe("math tests",...)
блока.Примечания:
node_modules/.bin/jest
наnode_modules\jest\bin\jest.js
.'--inspect-brk'
параметр в команду.Выполнение одиночного Jest-теста с помощью сценариев NPM в package.json
Установив Jest, вы можете упростить синтаксис этой команды (см. Выше) с помощью сценариев NPM . В
"package.json"
добавляем новый скрипт в"scripts"
раздел:В этом случае мы используем псевдоним
'jest'
вместо записи полного пути к нему. Кроме того, мы не указываем путь к файлу конфигурации, так как мы можем поместить его в файл,"package.json"
и Jest рассмотрит его по умолчанию. Теперь вы можете запустить команду:npm run test:math
и
"math tests"
блок с двумя тестами будет выполнен. Или, конечно, вы можете указать один конкретный тест по имени.Другой вариант - извлечь
<the-name-of-test-block>
параметр из"test:math"
сценария и передать его из команды NPM:package.json:
Команда:
npm run test:math "math tests"
Теперь вы можете управлять именем запускаемых тестов с помощью более короткой команды.
Примечания:
'jest'
будет работать со сценариями NPM, потому чтоnode
.Запуск выбранного Jest-теста в коде Visual Studio
Если вы используете код Visual Studio, вы можете воспользоваться им и запустить текущий выбранный тест (в редакторе кода), нажав
F5
кнопку. Для этого нам потребуется создать новый файл конфигурации запуска в".vscode/launch.json"
файле. В этой конфигурации мы будем использовать предопределенные переменные, которые заменяются соответствующими (к сожалению, не всегда ) значениями при запуске. Из всех доступных нам интересны только эти:${relativeFile}
- текущий открытый файл относительно${workspaceFolder}
${selectedText}
- текущий выделенный текст в активном файлеНо перед записью конфигурации запуска мы должны добавить
'test'
скрипт в наш'package.json'
(если у нас его еще нет).package.json:
тогда мы можем использовать его в нашей конфигурации запуска.
Конфигурация запуска:
он фактически делает то же самое, что и команды, описанные ранее в этом ответе. Теперь, когда все готово, мы можем запустить любой тест без необходимости переписывать параметры команды вручную.
Вот все, что вам нужно сделать:
'F5'
кнопку.И вуаля!
Теперь для запуска любого теста просто откройте его в редакторе, выберите его имя и нажмите F5.
К сожалению, это не будет "вуаля" на машинах с Windows, потому что они заменяют (кто знает почему)
${relativeFile}
переменную путем обратного слеша, и Jest не поймет такой путь.Примечания:
'--inspect-brk'
параметр.'package.json'
.источник
npx
упрощении вызова Jest вне зависимости от ОС.Вы также можете использовать
f
или,x
чтобы сфокусировать или исключить тест. Напримеристочник
xit
у меня сработало, ноfit
нет. Я использую Jest @ 22.4.4.fit
у меня работает в jest@23.1.0.f
это работает только в пределах одного файла.Как сказано выше, вы можете запустить команду
Если у вас
it
внутриdescribe
блока, вы должны запуститьисточник
Если вы
jest
используете команду сценария, что-то вроде этогоnpm test
, вам нужно использовать следующую команду, чтобы она работала:источник
В последней версии Jest вы можете использовать одно из следующих, чтобы запустить только один тест, то же самое для набора тестов.
jest 'test 1'
может также работать, если имя теста уникально.источник
В VS Code это позволяет мне запускать / отлаживать только 1 Jest тест с точками останова: https://github.com/Microsoft/vscode-recipes/tree/master/debugging-jest-tests
У меня
launch.json
есть это внутри:и это в
package.json
:test
(илиit
) наtest.only
(илиit.only
). Чтобы запустить 1 набор тестов (несколько тестов), изменитеdescribe
наdescribe.only
.Jest Current File
.источник
"scripts": { "test": "jest" }
вpackage.json
потому , что вы указали полный путь в"program"
параметре вlaunch.json
.просто небольшое дополнение, потому что, кажется, была какая-то драка, если использовать
./node_modules/.bin/jest -i ...
или простоjest -i ...
илиnpm test -- -i ...
jest
работает, если он установлен глобально (как с npm install -g jest), не очень чистый способ обработки зависимостейnpx jest -i ...
=>, это именно то, для чего предназначен npx. спасает вас от письма./node_modules/.bin/...
источник
Вот мое взятие:
./node_modules/.bin/jest --config test/jest-unit-config.json --runInBand src/components/OpenForm/OpenForm.spec.js -t 'show expanded'
Ноты:
./node_modules/.bin/...
это прекрасный способ получить доступ к локально установленному двоичному файлу jest (или mocha или ...), который поставляется вместе с локально установленным пакетом. (да, в ваших сценариях npm вы можетеjest
ничего не делать раньше, но это удобно в командной строке ... (это также хорошее начало для вашей конфигурации отладки, какую бы среду IDE вы не использовали ...)package.json
), это то, что вам нужно.--runInBand
- как уже говорилось, не знаю о вашей конфигурации, но если вы сосредоточены на разработке / исправлении одного теста, вы скорее не хотите иметь дело с веб-работниками ...-t
чтобы не запускать все тесты в этом файле, а только один (здесь: тот, у которого есть что-то с 'show expanded
' в его имени). Тот же эффект может быть достигнут путем склеивания.only()
в этот файл.источник
Теперь есть хороший плагин для шуток,
jest-watch-typeahead
который делает этот процесс намного проще.источник
Это будет работать только в том случае, если ваша спецификация теста уникальна. Код выше будет ссылаться
файл с таким именем:
test-name.component.spec.ts
источник