У меня есть интеграционный тест, для которого требуется небольшое количество кредитов API от третьей стороны. Тесты обычно проходят .skip
ped, но иногда мне хочется их запустить и потратить кредиты.
Прямо сейчас я вручную удаляю .skip
, запускаю:
npx jest -t 'integration tests'
...затем снова добавьте .skip
. Однако я обеспокоен тем, что случайно зафиксирую удаленный .skip
, а говорить коллегам, чтобы они удалили .skip
до того, как они запустят тесты, будет хлопотно.
Можно ли переопределить Jest .skip
из командной строки? В документации Jest об этом не упоминается, но может быть какой-то другой способ.
Согласно документации Jest CLI не имеет такой опции. Однако было бы достаточно просто сделать что-то вроде:
const _it = process.env.RUN_ALL ? it : xit;
_it("behaves correctly", () => { /* ... */ });
чтобы позволить вам контролировать, пропускаются ли определенные тесты или выполняются с использованием переменной среды.
В качестве альтернативы вы можете использовать различные параметры обнаружения тестов в конфигурации , чтобы сгруппировать свои тесты, например, по соглашение об именах файлов и предоставление точек входа для запуска различных групп по мере необходимости. Например, используя проекты с разными testMatch
, вы можете сделать что-то вроде:
{
"scripts": {
"test": "jest --selectProjects some",
"test:all": "jest",
"test:other": "jest --selectProjects other"
}
}
@mikemaccana "Также под псевдонимами: it.skip(name, fn), xit(name, fn) и xtest(name, fn)"
Основываясь на превосходном ответе @jonrsharpe, но делая намерение кода более явным, поскольку _it
, xit
и it
одновременно трудно читать:
const testOrSkip = process.env.RUN_SKIPPED_TESTS ? test : test.skip;
testOrSkip("behaves correctly", () => {
expect(true).toBeTruthy();
});
Тестирование:
$ npx jest src/backend/runme.test.ts
Test Suites: 1 skipped, 0 of 1 total
Tests: 1 skipped, 1 total
Snapshots: 0 total
Time: 3.566 s
Ran all test suites matching /src/backend/runme.test.ts/i.
$ export RUN_SKIPPED_TESTS='true'
$ npx jest src/backend/runme.test.ts
PASS src/backend/runme.test.ts
✓ behaves correctly (3 ms)
Test Suites: 1 passed, 1 total
Tests: 1 passed, 1 total
Snapshots: 0 total
Time: 1.951 s
Ran all test suites matching /src/backend/runme.test.ts/i.
Я так же подозревал, что вариант не существует. Что такое
xit
?