async-kit
Version:
A simple and powerful async abstraction lib for easily writing Node.js code.
77 lines (55 loc) • 1.49 kB
Markdown
# BDD Spec
The Mocha framework is used for BDD-style tests.
To help understand the following tests, here are the three helper functions used:
```js
function createStats( n )
{
var i ;
var stats = {
startCounter: [] ,
endCounter: [] ,
order: [] ,
plan: {
then: 0 ,
'else': 0 ,
'catch': 0 ,
'finally': 0
} ,
exec: {
then: 0 ,
'else': 0 ,
'catch': 0 ,
'finally': 0
}
} ;
for ( i = 0 ; i < n ; i ++ ) { stats.startCounter[ i ] = stats.endCounter[ i ] = 0 ; }
return stats ;
}
function asyncJob( stats , id , delay , options , result , callback )
{
var realResult = result.slice() ;
stats.startCounter[ id ] ++ ;
setTimeout( function() {
stats.endCounter[ id ] ++ ;
stats.order.push( id ) ;
if ( typeof options.failCount === 'number' && options.failCount >= stats.endCounter[ id ] && ! ( result[ 0 ] instanceof Error ) )
{
realResult[ 0 ] = new Error( "Planned failure" ) ;
}
callback.apply( undefined , realResult ) ;
} , delay ) ;
}
function syncJob( stats , id , options , result , callback )
{
var realResult = result.slice() ;
stats.startCounter[ id ] ++ ;
stats.endCounter[ id ] ++ ;
stats.order.push( id ) ;
if ( typeof options.failCount === 'number' && options.failCount >= stats.endCounter[ id ] && ! ( result[ 0 ] instanceof Error ) )
{
realResult[ 0 ] = new Error( "Planned failure" ) ;
}
callback.apply( undefined , realResult ) ;
}
```
The Full BDD spec generated by Mocha: