Javascript 是否可以异步定义mocha测试?
正如mocha文档中指出的,可以动态生成测试:Javascript 是否可以异步定义mocha测试?,javascript,node.js,asynchronous,testing,mocha.js,Javascript,Node.js,Asynchronous,Testing,Mocha.js,正如mocha文档中指出的,可以动态生成测试: var assert = require('chai').assert; function add() { return Array.prototype.slice.call(arguments).reduce(function(prev, curr) { return prev + curr; }, 0); } describe('add()', function() { var tests = [ {args:
var assert = require('chai').assert;
function add() {
return Array.prototype.slice.call(arguments).reduce(function(prev, curr) {
return prev + curr;
}, 0);
}
describe('add()', function() {
var tests = [
{args: [1, 2], expected: 3},
{args: [1, 2, 3], expected: 6},
{args: [1, 2, 3, 4], expected: 10}
];
tests.forEach(function(test) {
it('correctly adds ' + test.args.length + ' args', function() {
var res = add.apply(null, test.args);
assert.equal(res, test.expected);
});
});
});
我遇到的问题是,我想根据异步函数的结果生成测试。大概是这样的:
describe('add()', function() {
asyncFunctionThatReturnsAPromise()
.then(tests => {
tests.forEach(function(test) {
it('correctly adds ' + test.args.length + ' args', function() {
var res = add.apply(null, test.args);
assert.equal(res, test.expected);
});
});
});
});
然而,当执行时,结果是0个测试用例
不支持异步定义测试,还是有办法做到这一点?我刚刚找到了方法。如果您使用
--delay
标志执行mocha,则将在全局范围中定义run()
,并且在调用run()
之前,您的测试套件将不会执行。下面是一个例子:
describe('add()', function() {
asyncFunctionThatReturnsAPromise()
.then(tests => {
tests.forEach(function(test) {
it('correctly adds ' + test.args.length + ' args', function() {
var res = add.apply(null, test.args);
assert.equal(res, test.expected);
});
});
run();
});
});
以下是文档: