如何运行与摩卡一个测试?(How to run a single test with Mocha?)

2019-06-25 00:09发布

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

Answer 1:

尝试使用摩卡的--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'

为了运行单个测试。 请注意,这里grep在所有的名称describe(name, fn)it(name, fn)调用。

请考虑使用嵌套的describe()要求,以使其易于查找并选择特定的集命名空间。



Answer 2:

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

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

只有这个测试将所有的文件/套房运行。



Answer 3:

如果您正在使用npm test (使用的package.json脚本)使用一个额外的--通过对摩卡通过帕拉姆

npm test -- --grep "my second test"

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

修改的package.json:

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

或者选择使用--bail这似乎是不太挑剔

npm test -- --bail


Answer 4:

嗨上述解决方案并没有为我工作。 运行单个测试的另一种方法是

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

这有助于一个测试用例从一个单一的文件,并与特定的名称运行。



Answer 5:

运行单个测试-by filename-

其实,还可以通过运行一个单摩卡测试(不只是“它() -字符串grepping”),如果删除了水珠图案(例如./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 ,如果您有它全球的装机量。


如果你想要的舒适package.json :还有:去掉**/*您-ish水珠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 

(介意--



Answer 6:

npm test <filepath>

例如:

npm test test/api/controllers/test.js

这里 '测试/ API /控制器/ test.js' 是文件路径。



Answer 7:

你可以试试“it.only”

 it.only('Test one ', () => {

            expect(x).to.equal(y);
        });
it('Test two ', () => {

            expect(x).to.equal(y);
        });

在这第一个只会执行



Answer 8:

不知道为什么使用NPM测试时,grep的方法不适合我的工作。 这工作虽然。 我也还需要指定的测试文件夹的某些原因。

高空测试 - 测试/ sometest.js



Answer 9:

展望https://mochajs.org/#usage我们看到,简单地使用

摩卡测试/ MYFILE

将工作。 您可以省略末尾的” .js文件。



Answer 10:

整合所有的测试在一个test.js文件和你的包JSON添加脚本如下:

  "scripts": {
  "api:test": "node_modules/.bin/mocha --timeout 10000 --recursive api_test/"
},

在您的测试目录中键入命令:

npm run api:test


文章来源: How to run a single test with Mocha?