如何使用Mocha进行单个测试?

2020/10/04 02:21 · javascript ·  · 0评论

我使用Mocha测试我的JavaScript内容。我的测试文件包含5个测试。是否可以运行特定测试(或一组测试)而不是文件中的所有测试?

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

运行单个测试。请注意,这涉及alldescribe(name, fn)it(name, fn)调用的名称

考虑将嵌套describe()调用用于命名空间,以使其易于查找和选择特定集合。

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

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

仅此测试将从所有文件/套件运行。

如果您正在使用npm test(使用package.json脚本),请使用附加--参数将参数传递给摩卡

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

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

修改package.json:

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

或替代使用--bail似乎不太麻烦

npm test -- --bail

仅在“描述”,“描述”或“上下文”之前使用。我使用“ $ npm run test:unit”运行,它仅使用.only执行单位。

describe.only('get success', function() {
 // ...
});

it.only('should return 1', function() {
  // ...
});

通过文件名运行单个测试

实际上,如果您从mocha.opts中删除了glob模式(例如),并分别创建了一个副本,则还可以按文件名(而不是仅通过“ it()-string-grepping”)运行一次摩卡测试./test/**/*.spec.js,而无需执行以下操作:

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 glob中删除-ish glob 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 

(注意--!)

您好上述解决方案对我不起作用。运行单个测试的另一种方法是

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

这有助于从单个文件使用特定名称运行测试用例。

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);
        });

在这第一个只会执行

查看https://mochajs.org/#usage,
我们看到它只是使用

摩卡测试/ myfile

将工作。您可以在末尾省略“ .js”。

对于那些希望运行单个文件但无法运行的文件,对我有用的是,我需要将我的测试用例包装在如下的描述套件中,然后使用描述标题(例如“我的测试描述”)作为模式。

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"

将所有测试合并到一个test.js文件中,并将您的json包装脚本添加为:

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

在测试目录中键入命令:

npm run api:test

不知道为什么使用npm test时grep方法对我不起作用。虽然可以。由于某种原因,我还需要指定测试文件夹。

npm test -- test/sometest.js
本文地址:http://javascript.askforanswer.com/ruheshiyongmochajinxingdangeceshi.html
文章标签: ,  
版权声明:本文为原创文章,版权归 javascript 所有,欢迎分享本文,转载请保留出处!

文件下载

老薛主机终身7折优惠码boke112

上一篇:
下一篇:

评论已关闭!