From d1af106b764720e6c9796a75feadfe230dd16f63 Mon Sep 17 00:00:00 2001 From: Bamieh Date: Tue, 12 Dec 2017 22:43:00 +0200 Subject: [PATCH] doc: add countdown module to writing tests guide PR-URL: https://github.com/nodejs/node/pull/17201 Reviewed-By: James M Snell Reviewed-By: Evan Lucas Reviewed-By: Gireesh Punathil Reviewed-By: Jon Moss --- doc/guides/writing-tests.md | 29 +++++++++++++++++++++++++---- 1 file changed, 25 insertions(+), 4 deletions(-) diff --git a/doc/guides/writing-tests.md b/doc/guides/writing-tests.md index 3ea221901195dc..1fa2b3c558f876 100644 --- a/doc/guides/writing-tests.md +++ b/doc/guides/writing-tests.md @@ -138,11 +138,15 @@ platforms. ### The *common* API -Make use of the helpers from the `common` module as much as possible. +Make use of the helpers from the `common` module as much as possible. Please refer +to the [common file documentation](https://github.com/nodejs/node/tree/master/test/common) +for the full details of the helpers. -One interesting case is `common.mustCall`. The use of `common.mustCall` may -avoid the use of extra variables and the corresponding assertions. Let's explain -this with a real test from the test suite. +#### common.mustCall + +One interesting case is `common.mustCall`. The use of `common.mustCall` may avoid +the use of extra variables and the corresponding assertions. Let's explain this +with a real test from the test suite. ```javascript 'use strict'; @@ -194,6 +198,23 @@ const server = http.createServer(common.mustCall(function(req, res) { }); ``` +#### Countdown Module + +The common [Countdown module](https://github.com/nodejs/node/tree/master/test/common#countdown-module) provides a simple countdown mechanism for tests that +require a particular action to be taken after a given number of completed tasks +(for instance, shutting down an HTTP server after a specific number of requests). + +```javascript +const Countdown = require('../common/countdown'); + +const countdown = new Countdown(2, function() { + console.log('.'); +}); + +countdown.dec(); +countdown.dec(); // The countdown callback will be invoked now. +``` + ### Flags