我使用Mocha测试我的JavaScript内容。我的测试文件包含5个测试。是否可以运行特定测试(或一组测试)而不是文件中的所有测试?
我使用Mocha测试我的JavaScript内容。我的测试文件包含5个测试。是否可以运行特定测试(或一组测试)而不是文件中的所有测试?
Answers:
尝试使用摩卡--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
子字符串的内容?正则表达式^$
不工作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脚本),请使用--
其他参数将参数传递给摩卡
例如 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
其实,我们也可以运行单个测试摩卡通过文件名(不只是“它() -字符串grepping”)如果您删除glob模式(例如,./test/**/*.spec.js
从mocha.opts中),并分别创建了一个副本,,而无需执行以下操作:
node_modules/.bin/mocha --opts test/mocha.single.opts test/self-test.spec.js
这是我的mocha.single.opts(只是缺少上述的glob行而已)
--require ./test/common.js
--compilers js:babel-core/register
--reporter list
--recursive
背景:虽然您可以覆盖opts-File中的各种开关(以开头--
),但不能覆盖glob。该链接也有一些解释。
提示:如果node_modules/.bin/mocha
让您感到困惑,请使用本地软件包mocha。mocha
如果已全局安装,也可以只编写。
并且,如果您想要以下这些的舒适之处package.json
:仍然:**/*
从您的设备中删除-ish globmocha.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('Test one ', () => {
expect(x).to.equal(y);
});
it('Test two ', () => {
expect(x).to.equal(y);
});
在这第一个只会执行
--forbid-only
CI /构建服务器执行测试,则存在危险。.only
倾向于潜入主分支并使其静音,因为它们将不再执行。我想到将更改代码以运行不同测试的工作流程视为反功能。测试运行者应确定应执行哪些测试(也称为标记测试)而不是开发人员。
it.only
库
--grep
只能从@
标签中过滤掉。