Introduction to assert-plus
The assert-plus module is a powerful assertion library in Node.js that provides a comprehensive set of assertion functions for validating inputs, parameters, and states. It extends the basic assertions provided by Node.js’s built-in assert
module, offering a more feature-rich and improved developer experience.
In this article, we’ll explore a wide range of APIs offered by assert-plus and demonstrate how they can be leveraged to ensure the robustness and reliability of your Node.js applications. Each API is accompanied by a code snippet for better understanding, followed by an example application to illustrate practical usage.
Basic Assertions
assert.ok(value, [message])
Asserts that the given value
is truthy. If not, it throws an error with the optional message
.
const assert = require('assert-plus'); assert.ok(true, 'This will not throw'); assert.ok(false, 'This will throw');
assert.equal(actual, expected, [message])
Asserts that the actual
value is equal to the expected
value. Throws an error if they are not equal.
const assert = require('assert-plus'); assert.equal(3, 3, '3 is equal to 3'); assert.equal(3, 4, 'This will throw');
assert.strictEqual(actual, expected, [message])
Asserts that actual
value is strictly equal (===) to the expected
value.
const assert = require('assert-plus'); assert.strictEqual('hello', 'hello', 'Strings match'); assert.strictEqual(5, '5', 'This will throw');
assert.notEqual(actual, expected, [message])
Asserts that the actual
value is not equal to the expected
value. Throws an error if they are equal.
const assert = require('assert-plus'); assert.notEqual(3, 4, 'This will not throw'); assert.notEqual(3, 3, 'This will throw');
assert.fail([message])
Throws an assertion error with the given message
.
const assert = require('assert-plus'); assert.fail('This will always throw');
Type Checking
assert.array(object, [message])
Asserts that the given object
is an array.
const assert = require('assert-plus'); assert.array([1, 2, 3], 'This is an array'); assert.array('not an array', 'This will throw');
assert.bool(object, [message])
Asserts that the given object
is a boolean.
const assert = require('assert-plus'); assert.bool(true, 'This is a boolean'); assert.bool('not a boolean', 'This will throw');
assert.number(object, [message])
Asserts that the given object
is a number.
const assert = require('assert-plus'); assert.number(123, 'This is a number'); assert.number('not a number', 'This will throw');
assert.string(object, [message])
Asserts that the given object
is a string.
const assert = require('assert-plus'); assert.string('hello', 'This is a string'); assert.string(123, 'This will throw');
assert.object(object, [message])
Asserts that the given object
is an object.
const assert = require('assert-plus'); assert.object({}, 'This is an object'); assert.object(123, 'This will throw');
assert.function(object, [message])
Asserts that the given object
is a function.
const assert = require('assert-plus'); assert.function(function () {}, 'This is a function'); assert.function(123, 'This will throw');
Example Application
Let’s create a simple application that utilizes the above assert-plus APIs to validate user input in an HTTP server.
const http = require('http'); const assert = require('assert-plus'); const server = http.createServer((req, res) => { if (req.method === 'POST' && req.url === '/validate') { let body = ''; req.on('data', chunk => { body += chunk.toString(); }); req.on('end', () => { const data = JSON.parse(body); try { assert.string(data.name, 'name must be a string'); assert.number(data.age, 'age must be a number'); assert.ok(data.agreeToTerms, 'must agree to terms'); res.writeHead(200, {'Content-Type': 'application/json'}); res.end(JSON.stringify({ message: 'Validation passed' })); } catch (error) { res.writeHead(400, {'Content-Type': 'application/json'}); res.end(JSON.stringify({ message: error.message })); } }); } else { res.writeHead(404); res.end(); } }); server.listen(3000, () => { console.log('Server listening on port 3000'); });
In this example, we create a simple HTTP server that validates JSON input using the assert-plus module. If the input is valid, a success message is returned; otherwise, an error message is sent back to the client.
Integrating assertion libraries like assert-plus can significantly enhance the robustness and reliability of your Node.js applications by ensuring that your code behaves as expected under various conditions.
Hash: f47e3e691ce3678f97db7571581002998e415dab77c489983baac509aaa84a41