Как запустить один тест с помощью Jest?
у меня есть тест "работает с вложенными детьми" в файле fix-order-test.js.
запуск ниже запускает все тесты в файле.
jest fix-order-test
Как выполнить только один тест? Ниже не работает, поскольку он ищет файл указанного регулярного выражения.
jest 'works with nested children'
8 ответов:
из командной строки используйте
--testNamePatternили-tфлагjest -t 'fix-order-test'это будет запускать все тесты, но пропустить те, которые не соответствуют имени теста. Его в docs
другой способ-запустить тест в режиме часов
jest --watchи нажмите клавишуpчтобы отфильтровать тесты, введите имя тестового файла илиtзапустить один тест.
jest documentation рекомендует следующее:
Если тест не удается, одна из первых вещей, чтобы проверить следует если тест не удается, когда это единственный тест, который выполняется. в шутку это просто запустить только один тест - просто временно изменить это
testкоманда кtest.onlytest.only('this will be the only test that runs', () => { expect(true).toBe(false); });
как уже упоминалось в других ответов,
test.onlyпросто отфильтровывает другие тесты в том же файле. Поэтому тесты в других файлах все равно будут выполняться.так, чтобы запустить один тест, есть два подхода:
Вариант 1: если ваше имя теста уникально, вы можете ввести
tв режиме просмотра и введите имя теста, который вы хотите запустить.Вариант 2:
- нажмите
pпри этом в режиме часов, чтобы введите регулярное выражение для имени файла, который вы хотите запустить. (Соответствующие команды, как это отображается при запуске Jest в режиме просмотра).- изменить
itдоit.onlyна тесте, который вы хотели бы запустить.при любом из указанных выше подходов Jest будет выполнять только один тест в указанном файле.
вы также можете использовать
fилиxдля фокусировки или исключения теста. Напримерfit('only this test will run', () => { expect(true).toBe(false); }); it('this test will not run', () => { expect(true).toBe(false); }); xit('this test will be ignored', () => { expect(true).toBe(false); });
как сказано выше, вы можете запустить команду
jest -t 'fix-order-test'если у вас
itвнутриdescribeблок, вы должны запуститьjest -t '<describeString> <itString>'
С последняя версия шутки, вы можете использовать один из следующих способов для запуска только одного теста, то же самое для набора тестов.
it.only('test 1', () => {}) test.only('test 1', () => {}) fit('test 1', () => {})
jest 'test 1'также может работать, если имя теста уникально.
вот мое мнение:
./node_modules/.bin/jest --config test/jest-unit-config.json --runInBand src/components/OpenForm/OpenForm.spec.js -t 'show expanded'Примечания:
./node_modules/.bin/...Это замечательный способ, чтобы получить доступ к локально установленной шутки(или мокко или...) двоичный файл, который поставляется с локально установленным пакетом. (да, в ваших сценариях npm вы можетеjestничего не раньше, но это удобно в командной строке... (это также хорошее начало для вашей конфигурации отладки, какой бы IDE вы ни использовали...)- ваш проект может не иметь набор конфигурации опции. Но если это так (заглянуть в Скрипты в
package.json), это то, что вам нужно.--runInBand– как уже было сказано, не знаю о вашей конфигурации, но если вы сосредоточитесь на разработке/исправлении одного теста, вы скорее не хотите иметь дело с веб-работниками...- да, вы можете дать полный, явный путь к вашему файлу
- дополнительно, вы можете использовать
-tчтобы не запускать все тесты в этом файле, а только один (здесь: один, что-то с ‘show expandedна его имя). Такого же эффекта можно добиться путем склеивания.only()в этот файл.
в коде VS это позволяет мне запускать / отлаживать только 1 Тест Jest с точками останова: https://github.com/Microsoft/vscode-recipes/tree/master/debugging-jest-tests
мой
launch.jsonэто внутри:{ "version": "0.2.0", "configurations": [ { "type": "node", "request": "launch", "name": "Jest All", "program": "${workspaceFolder}/node_modules/.bin/jest", "args": ["--runInBand"], "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "windows": { "program": "${workspaceFolder}/node_modules/jest/bin/jest", } }, { "type": "node", "request": "launch", "name": "Jest Current File", "program": "${workspaceFolder}/node_modules/.bin/jest", "args": ["${relativeFile}"], "console": "integratedTerminal", "internalConsoleOptions": "neverOpen", "windows": { "program": "${workspaceFolder}/node_modules/jest/bin/jest", } } ] }и в
package.json:"jest": { "testEnvironment": "node" }
- чтобы запустить 1 Тест, в этом тесте измените
test(илиit) кtest.only(илиit.only). Чтобы запустить 1 набор тестов (несколько тестов), изменитеdescribeдоdescribe.only.- Set останова(ы) если вы хотите.
- в VS-коде перейдите в режим отладки (Shift+Cmd+D).
- из выпадающего меню в верхней части, выберите
Jest Current File.- Нажмите зеленую стрелку, чтобы запустить этот тест.
Comments