如何使用Mocha进行单个testing?

我使用摩卡来testing我的JavaScript的东西。 我的testing文件包含5个testing。 是否有可能运行一个特定的testing(或一组testing),而不是文件中的所有testing?

尝试使用摩卡的--grep选项 :

  -g, --grep <pattern> only run tests matching <pattern> 

您可以使用任何有效的JavaScript正则expression式作为<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' 

运行一个testing。 请注意,这个grep跨所有describe(name, fn)it(name, fn)调用的it(name, fn)

考虑使用命名空间的嵌套的describe()调用,以便于定位和select特定的集合。

根据您的使用模式,您可能只喜欢使用。 我们使用TDD风格; 它看起来像这样:

 test.only('Date part of valid Partition Key', function (done) { //... } 

只有这个testing将从所有的文件/套件运行。

如果您使用npm test (使用package.json脚本),请使用extra --将parameter passing给mocha

例如npm test -- --grep "my second test"

编辑 :看起来像 – --grep可以有点挑剔(可能取决于其他参数)。 您可以:

修改package.json:

 "test:mocha": "mocha --grep \"<DealsList />\" .", 

或者使用--bail这似乎不那么挑剔

 npm test -- --bail 

您好上面的解决scheme没有为我工作。 运行单一testing的另一种方式是

 mocha test/cartcheckout/checkout.js -g 'Test Name Goes here' 

这有助于从单个文件和特定名称运行testing用例。

不知道为什么在使用npmtesting时grep方法不适用于我。 这工作虽然。 由于某种原因,我也需要指定testing文件夹。

npm test – test / sometest.js

运行单个testing-by文件名 –

实际上,如果你从你的摩卡中删除glob模式(例如./test/**/*.spec.js ),你也可以通过文件名 (不只是通过“it() – string-grepping”)来运行一个单一的摩卡testing.opts分别创build一个副本,不需要:

 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的舒适度:仍然:从你的mocha.opts删除**/* -ish glob,将它们插入到这里,进行全部testing,把它们留给单个testing:

 "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 

(介意-- !)

 npm test <filepath> 

例如:

 npm test test/api/controllers/test.js 

这里“test / api / controllers / test.js”是文件path。