Я использую Mocha для тестирования своих файлов JavaScript. Мой тестовый файл содержит 5 тестов. Возможно ли выполнить конкретный тест (или набор тестов), а не все тесты в файле?
Как запустить один тест с помощью Mocha?
Ответ 1
Попробуйте использовать параметр 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)
invocations.
Рассмотрим использование вложенных describe()
вызовов для пространства имен, чтобы упростить поиск и выбор определенных наборов.
Ответ 2
В зависимости от вашего шаблона использования вы можете просто использовать его. Мы используем стиль TDD; это выглядит так:
test.only('Date part of valid Partition Key', function (done) {
//...
}
Только этот тест будет запущен из всех файлов/наборов.
Ответ 3
Если вы используете npm test
(используя скрипты package.json), используйте дополнительный --
, чтобы передать параметр через mocha
например. npm test -- --grep "my second test"
EDIT: Похоже, что --grep
может быть немного суетливым (возможно, в зависимости от других аргументов). Вы можете:
Измените package.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
Или, альтернативно, используйте --bail
, который кажется менее суетливым
npm test -- --bail
Ответ 4
запустить одиночный тест по имени файла
На самом деле, можно также выполнить один тест мокко по имени файла (а не просто через "it() - string-grepping"), если вы удалите шаблон glob (например, ./test/**/*.spec.js
) из своего мокко.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. Вы также можете написать просто mocha
, если он установлен глобально.
И если вам нужны удобства package.json
: Still: удалите глобус **/*
-ish из ваших mocha.opts
, вставьте их сюда, для 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
(обратите внимание --
!)
Ответ 5
Привет, выше решения не работали для меня. Другой способ запуска одного теста -
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
Это помогает запустить тестовый файл из одного файла и с определенным именем.
Ответ 6
npm test <filepath>
например:
npm test test/api/controllers/test.js
здесь 'test/api/controllerlers/test.js' - путь к файлу.
Ответ 7
Вы можете попробовать "it.only"
it.only('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
в этом будет исполнен только первый
Ответ 8
Не знаю, почему метод grep не работает для меня при использовании теста npm. Это работает. Мне также необходимо указать тестовую папку по какой-либо причине.
npm test - test/sometest.js
Ответ 9
Заглядывая в https://mochajs.org/#usage мы видим, что просто используем
тест мокко/мой файл
буду работать. Вы можете опустить ".js" в конце.
Ответ 10
Объедините все ваши тесты в один файл test.js и ваш пакет json add scripts как:
"scripts": {
"api:test": "node_modules/.bin/mocha --timeout 10000 --recursive api_test/"
},
Введите команду в вашем тестовом каталоге:
npm run api:test
Ответ 11
Просто используйте .only, прежде чем "описать", "это" или "контекст". Я запускаю, используя "$ npm run test: unit", и он выполняет только модули с .only.
describe.only('get success', function() {
// ...
});
it.only('should return 1', function() {
// ...
});