Я використовую Mocha для тестування моїх JavaScript-речей. Мій тестовий файл містить 5 тестів. Чи можливо це запустити певний тест (або набір тестів), а не всі тести у файлі?
Я використовую Mocha для тестування моїх JavaScript-речей. Мій тестовий файл містить 5 тестів. Чи можливо це запустити певний тест (або набір тестів), а не всі тести у файлі?
Відповіді:
Спробуйте скористатися параметром mocha--grep
:
-g, --grep <pattern> only run tests matching <pattern>
Ви можете використовувати будь-який дійсний JavaScript-регекс як <pattern>
. Наприклад, якщо у нас є test/mytest.js
:
it('logs a', function(done) {
console.log('a');
done();
});
it('logs b', function(done) {
console.log('b');
done();
});
Тоді:
$ mocha -g 'logs a'
Провести єдиний тест. Зауважте, що це пояснює назви всіх describe(name, fn)
та it(name, fn)
викликів.
Подумайте про використання вкладених describe()
викликів для простору імен, щоб полегшити пошук та вибір конкретних наборів.
mocha some/test.js
) взагалі не працювала. Дякую!
logs a bcd
який містить logs a
підрядку? Regexp ^$
не працює 0.10.2.
В залежності від вашої схеми використання, ви можете просто хочете використовувати тільки . Ми використовуємо стиль TDD; це виглядає приблизно так:
test.only('Date part of valid Partition Key', function (done) {
//...
}
Тільки цей тест запуститься з усіх файлів / наборів.
it.only
.
eslint-plugin-mocha
є правило, no-exclusive-tests
яке вас зловить, якщо ви забудете видалити .only
.
Якщо ви використовуєте npm test
(використовуючи script.json скрипти), використовуйте додатковий, --
щоб передати парам в мочу
напр npm test -- --grep "my second test"
EDIT : Схоже, це --grep
може бути трохи метушливим (можливо, залежно від інших аргументів). Ти можеш:
Змініть package.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
Або ж альтернативне використання, --bail
яке здається менш метушливим
npm test -- --bail
--grep
може бути трохи метушливим - спробуйте поставити його відразу після мокко в рамках запису сценарію npm. Інше npm test -- --bail
корисно для відмови після першого невдалого випробування
--grep
врятувати мій день! Дуже дякую. PS. Я в Windows, бігаюnpm test -- --grep @tag
Насправді, ви також можете запустити єдиний мок-тест за назвою файлу (а не лише „it () - string-grepping“), якщо ви видалите шаблон (наприклад ./test/**/*.spec.js
) зі свого mocha.opts, відповідно створіть копію, без:
node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js
Ось мій mocha.single.opts (він відрізняється лише відсутньою згаданою лінією глобуса)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
Передумови: Хоча ви можете змінити різні перемикачі з opts-File (починаючи з --
), ви не можете змінити глобус . Це посилання також має деякі пояснення.
Підказка: якщо node_modules/.bin/mocha
вас бентежить, скористайтеся локальним пакетом мокко. Ви також можете писати просто mocha
, якщо у вас це встановлено в усьому світі.
І якщо ви хочете отримати переваги package.json
: Все-таки: вийміть з- **/*
глобус свій mocha.opts
, вставте їх сюди, для все тестування, залиште їх на одному тестуванні:
"test": "mocha ./test/**/*.spec.js",
"test-watch": "mocha -R list -w ./test/**/*.spec.js",
"test-single": "mocha $1",
"test-single-watch": "mocha -R list -w $1",
використання:
> npm run test
відповідно
> npm run test-single -- test/ES6.self-test.spec.js
(пам'ятай --
!)
Warning: Could not find any test files matching pattern: $1
Привіт вище рішення не працювали для мене. Інший спосіб виконання єдиного тесту - це
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
Це допомагає запустити тестовий випадок з одного файлу та із конкретним іменем.
-g
і вам не потрібно буде вказувати ім'я файлу. Якщо ви не можете написати вираз, достатньо вибіркове, це означає, що ви неправильно називаєте свої тести.
npm test <filepath>
наприклад:
npm test test/api/controllers/test.js
тут 'test / api / controllers / test.js' - це файлова траса.
Ви можете спробувати "it.only"
it.only('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
в цьому перший буде виконаний
--forbid-only
сервер CI / build. .only
має тенденцію проникати в основну гілку і переводити інші тести в глухий спосіб, оскільки вони просто більше не виконуватимуться. Я придумав робочий процес зміни коду для запуску різних тестів як антифункціональність. Тестовий керівник повинен визначити, які тести слід виконувати (він же теги з тегами), а не розробник.
it.only
Переглядаючи https://mochajs.org/#usage, ми бачимо, що це просто використовувати
тест на мочу / мій файл
буду працювати. Ви можете опустити ".js" наприкінці.
--grep
фільтрується лише з@
тегів.