Как запустить один тест с помощью Jest?



у меня есть тест "работает с вложенными детьми" в файле fix-order-test.js.



запуск ниже запускает все тесты в файле.



jest fix-order-test


Как выполнить только один тест? Ниже не работает, поскольку он ищет файл указанного регулярного выражения.



jest 'works with nested children'
844   8  

8 ответов:

из командной строки используйте --testNamePattern или -t флаг

jest -t 'fix-order-test'

это будет запускать все тесты, но пропустить те, которые не соответствуют имени теста. Его в docs

другой способ-запустить тест в режиме часов jest --watch и нажмите клавишу p чтобы отфильтровать тесты, введите имя тестового файла или t запустить один тест.

jest documentation рекомендует следующее:

Если тест не удается, одна из первых вещей, чтобы проверить следует если тест не удается, когда это единственный тест, который выполняется. в шутку это просто запустить только один тест - просто временно изменить это test команда к test.only

test.only('this will be the only test that runs', () => {
  expect(true).toBe(false);
});

как уже упоминалось в других ответов, test.only просто отфильтровывает другие тесты в том же файле. Поэтому тесты в других файлах все равно будут выполняться.

так, чтобы запустить один тест, есть два подхода:

Вариант 1: если ваше имя теста уникально, вы можете ввести t в режиме просмотра и введите имя теста, который вы хотите запустить.

Вариант 2:

  1. нажмите p при этом в режиме часов, чтобы введите регулярное выражение для имени файла, который вы хотите запустить. (Соответствующие команды, как это отображается при запуске Jest в режиме просмотра).
  2. изменить 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

    Ничего не найдено.