How does Mocha know that done was specified?

2019-02-25 00:15发布

If I write an asynchronous test using Mocha, all I need to do is to specify the done parameter on the test function:

test('foo', function (done) {...});

My question is: How does Mocha know whether done was given?

The definition of the test function should be something such as

function test(title, fn) {...};

How does Mocha check fn?

1条回答
走好不送
2楼-- · 2019-02-25 00:52

It uses the .length property on the test function.

To illustrate, try this in the Node REPL:

> (function() {}).length
0
> (function(done) {}).length
1

Here's the actual line in the source where this check happens:

this.async = fn && fn.length;
查看更多
登录 后发表回答