Я использую Mocha, чтобы проверить мои вещи JavaScript. Мой тестовый файл содержит 5 тестов. Возможно ли выполнить определенный тест (или набор тестов), а не все тесты в файле?
Я использую Mocha, чтобы проверить мои вещи JavaScript. Мой тестовый файл содержит 5 тестов. Возможно ли выполнить определенный тест (или набор тестов), а не все тесты в файле?
Ответы:
Попробуйте использовать опцию мокко--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
(используя сценарии package.json), используйте дополнительный, --
чтобы передать параметр в mocha
например npm test -- --grep "my second test"
РЕДАКТИРОВАТЬ : Похоже, --grep
может быть немного суетливый (вероятно, в зависимости от других аргументов). Ты можешь:
Измените package.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
Или альтернативно использовать, --bail
который кажется менее суетливым
npm test -- --bail
--grep
может быть немного суетливым - попробуйте поместить его сразу после мокко в записи сценария npm. Остальное npm test -- --bail
полезно для
--grep
спасло мой день! Большое спасибо. PS. Я на Windows, работаюnpm test -- --grep @tag
На самом деле, можно также запустить один тест mocha по имени файла (а не просто через «it () - grep-grepping»), если вы удалите шаблон glob (например, ./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 (начиная с --
), вы не можете переопределить глобус . Эта ссылка также имеет некоторые объяснения.
Подсказка: если node_modules/.bin/mocha
вас смущает, используйте местный пакет мокко. Вы также можете написать просто mocha
, если у вас установлено глобально.
И если вы хотите, чтобы все удобства package.json
: Still: удалите **/*
-ish glob из вашего 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 / сервер сборки. .only
имеет тенденцию проникать в основную ветвь и отключать другие тесты, поскольку они просто больше не будут выполняться. Я пришел к мысли о том, как изменить код для запуска различных тестов. Бегущий по тестам должен определить, какие тесты должны выполняться (так называемые теговые тесты), а не разработчик.
it.only
Заглядывая в https://mochajs.org/#usage мы видим, что просто используем
тест мокко / мой файл
буду работать. Вы можете опустить «.js» в конце.
--grep
фильтруют только по@
тегам.