我正在尝试动态运行一系列测试。我有以下设置,但它似乎没有运行,而且我没有收到任何错误:
import Mocha from 'mocha';
const Test = Mocha.Test;
const Suite = Mocha.Suite;
const mocha = new Mocha();
for (let s in tests) {
let suite = Suite.create(mocha.suite, s);
tests[s].forEach((test) => {
console.log('add test', test.name)
suite.addTest(new Test(test.name), () => {
expect(1+1).to.equal(2);
});
});
}
mocha.run();
我正在运行的测试
如下所示:
{ todo:
[ { name: 'POST /todos',
should: 'create a new todo',
method: 'POST',
endpoint: '/todos',
body: [Object] } ] }
(虽然在这一点上我的测试只是试图检查一个基本的期望)
根据 console.logs,迭代似乎很好,而且似乎正在添加测试,所以我对操作流程充满信心,我只是无法执行或出错。
最佳答案
您必须将测试函数传递给 Test
构造函数,而不是传递给 suite.addTest
。因此,更改您的代码以像这样添加测试:
suite.addTest(new Test(test.name, () => {
expect(1+1).to.equal(2);
}));
这是我正在运行的完整代码,改编自您的问题:
import Mocha from 'mocha';
import { expect } from 'chai';
const Test = Mocha.Test;
const Suite = Mocha.Suite;
const mocha = new Mocha();
var tests = { todo:
[ { name: 'POST /todos',
should: 'create a new todo',
method: 'POST',
endpoint: '/todos',
body: [Object] } ] };
for (let s in tests) {
let suite = Suite.create(mocha.suite, s);
tests[s].forEach((test) => {
console.log('add test', test.name);
suite.addTest(new Test(test.name, () => {
expect(1+1).to.equal(2);
}));
});
}
mocha.run();
当我使用 node_modules/.bin/babel-node test.es6
运行上面的代码时,我得到了输出:
todo
✓ POST /todos
1 passing (5ms)
关于node.js - 动态运行 Mocha 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32848584/