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?
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;
来源:https://stackoverflow.com/questions/15867672/how-does-mocha-know-that-done-was-specified