Выполнить только ОДИН тест с помощью Jest
Очень просто, я хочу запустить только один тест с помощью Jest.
Я помещаю it.only
или describe.only
, но он по-прежнему проводит множество тестов.
Я думаю, что он запускает все тесты с момента последнего коммита, но не должен иметь такого поведения с явно установленным флагом only
, правильно?
Что вызывает это поведение и как запускать один тест?
Ответы
Ответ 1
Jest распараллеливает тестовые прогоны, и он не знает заранее, какие тесты должен запускаться и который он не должен запускать. Это означает , когда вы используете "fit", он будет запускать только один тест в этом файле но все еще запускайте все остальные тестовые файлы в своем проекте.
fit
, fdescribe
и it.only
, describe.only
имеют ту же цель, пропустите другие тесты, запустите только меня.
Источник: https://github.com/facebook/jest/issues/698#issuecomment-177673281
Используйте механизм фильтрации jest
, когда вы запускаете свои тесты, например
jest --config=jest.config.json --watch
Вы можете фильтровать тесты с помощью testname
или filename
, просто следуйте инструкциям в терминале
![введите описание изображения здесь]()
Нажмите p
, затем введите имя файла
![введите описание изображения здесь]()
Затем вы можете использовать describe.only
и it.only
, который пропустит все остальные тесты из фильтрованного, проверенного файла.
Ответ 2
it.only
и describe.only
работает только для модуля они находятся. Если у вас возникли проблемы, чтобы фильтровать тесты в нескольких файлах, вы можете использовать jest -t name-of-spec
, фильтрации тестов, которые соответствуют названию спецификации (матч против имени в описании или тесте).
Источник: https://facebook.github.io/jest/docs/en/cli.html.
Например, я фокусирую тест, который я сейчас пишу, следующим образом (с помощью скрипта test в package.json
):
npm test -- -t "test foo"
Ответ 3
Не знаю, какая версия Jest представила это, но теперь вы можете использовать свойство -w
со значением jest cli.
https://facebook.github.io/jest/docs/en/cli.html#maxworkers-num
- maxWorkers = num
Псевдоним: -w. Указывает максимальное количество работников, где рабочий пул будет запущен для запуска тестов. По умолчанию это количество ядер, доступных на вашем компьютере. Может быть полезно отрегулируйте это в средах с ограниченными ресурсами, таких как CI, но по умолчанию должен быть достаточным для большинства случаев использования.
например. в package.json вы можете иметь script "test" только с одним работником.
"scripts": {
"test": "jest -w 1"
},
Это будет запускать только 1 тестовый файл сразу, но все тесты внутри тестового файла
Если вы хотите запустить только 1 тест в файле, используйте test.only
http://facebook.github.io/jest/docs/en/api.html#testonlyname-fn
И если вы хотите запустить все тесты в файле, но один за другим, я часто использую этот шаблон:
const tests = [];
test.push({input: 'foo', output: 'bar'});
tests.forEach((t) => {
test(JSON.stringify(t), () => {
expect(functionTesting(t.input)).toBe(t.output);
})
})
Ответ 4
Для меня это работает, если я использую 2 параметра, как это:
yarn test --watch -f "src/...fullpath.../reducer.spec.js" -t "Name of the test"
--watch: необязательно
-f: будет выполнять фильтрацию ваших файлов, поэтому, если у вас много тестов с одинаковым именем, укажите полный путь к точному файлу
-t: работает с "опишите" имя или "это" название вашего теста
Ответ 5
это так:
jest sometest.test.js -t "some expression to match a describe or a test"
он проверит все файлы с именем sometest.test.js
, если вы хотите проверить только определенный файл, вы можете сделать это:
jest src/user/.../sometest.test.js