我使用Mocha来测试我的JavaScript内容。我的测试文件包含5个测试。是否可以运行特定的测试(或一组测试)而不是文件中的所有测试?
答案 0 :(得分:297)
-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()
调用命名空间,以便于查找和选择特定的设置。
答案 1 :(得分:143)
根据您的使用模式,您可能只想使用 。我们使用TDD风格;它看起来像这样:
test.only('Date part of valid Partition Key', function (done) {
//...
}
只有这个测试才会从所有文件/套件中运行。
答案 2 :(得分:63)
如果您正在使用npm test
(使用package.json脚本),请使用额外的--
将参数传递给mocha
e.g。 npm test -- --grep "my second test"
编辑:看起来--grep
可能有些挑剔(可能取决于其他参数)。你可以:
修改package.json:
"test:mocha": "mocha --grep \"<DealsList />\" .",
或者使用似乎不那么挑剔的--bail
npm test -- --bail
答案 3 :(得分:10)
实际上,如果删除glob模式(例如./test/**/*.spec.js
),也可以运行单个mocha测试按文件名(不仅仅是“it() - string-grepping”)从你的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中的各种开关(从--
开始)can't override the glob。那个链接也有
一些解释。
提示:如果node_modules/.bin/mocha
让您感到困惑,请使用本地软件包mocha。如果您已全局安装,也可以只编写mocha
。
如果你想要package.json
的舒适:静止:从**/*
删除mocha.opts
- ish glob,将它们插入此处,进行全面测试,将它们留下单一测试:
"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
(请注意--
!)
答案 4 :(得分:8)
以上解决方案对我没有用。 另一种运行单个测试的方法是
mocha test/cartcheckout/checkout.js -g 'Test Name Goes here'
这有助于从单个文件和特定名称运行测试用例。
答案 5 :(得分:7)
npm test <filepath>
例如:
npm test test/api/controllers/test.js
这里'test / api / controllers / test.js'是文件路径。
答案 6 :(得分:3)
您可以尝试“仅它”。
List<Task<bool>> tasks = new List<Task<bool>>();
Parallel.For(0, 500, file =>
{
tasks.Add(SomeTask());
});
Console.WriteLine("Total tasks = " + tasks.Count);
在这种情况下,第一个只会执行
答案 7 :(得分:3)
对于那些希望运行单个文件的人,但他们无法使其正常工作,对我而言,最有效的方法是,我需要将测试用例包装在以下描述的套件中,然后使用描述标题,例如“我的测试说明”作为模式。
describe('My Test Description', () => {
it('test case 1', () => {
// My test code
})
it('test case 2', () => {
// My test code
})
})
然后运行
yarn test -g "My Test Description"
或
npm run test -g "My Test Description"
答案 8 :(得分:0)
在使用npm测试时,不确定为什么grep方法对我不起作用。这虽然有效。我还需要出于某种原因指定测试文件夹。
npm test - test / sometest.js
答案 9 :(得分:0)
答案 10 :(得分:0)
将所有测试合并到一个test.js文件中,并将程序包json添加脚本为:
"scripts": {
"api:test": "node_modules/.bin/mocha --timeout 10000 --recursive api_test/"
},
在测试目录上键入命令:
npm run api:test
答案 11 :(得分:0)
仅在'describe','it'或'context'之前使用。我使用“ $ npm run test:unit”运行,它仅使用.only执行单元。
describe.only('get success', function() {
// ...
});
it.only('should return 1', function() {
// ...
});
答案 12 :(得分:0)
使用 Mocha's --fgrep
(或仅 -f)可以选择包含字符串的测试,例如:
mocha -f 'my test x'
将在 my test x
、it()
或 describe()
块中运行所有包含 context()
的测试。