Working with the Node.js assert Library
Node.js' assert.equal(a, b)
function will throw an error if a != b
.
assert.equal(a, b)
is equivalent assert(a, b)
.
Asserts are most commonly used for testing, but can also be used as a more concise alternative to an if
statement in your code.
const assert = require('assert');
const a = 1;
const b = 2;
assert.equal(a, b); // Throws
assert(a, b); // Throws
assert.equal(a, a); // Succeeds
assert(a, a); // Succeeds
strictEqual()
While equal(a,b)
throws an error if a != b
, strictEqual(a, b)
throws an error if a !== b
.
Here's more on the difference between !==
and !=
in JavaScript
const assert = require('assert');
const a = 1;
const b = '1';
assert.equal(a, b); // Succeeds
assert.strictEqual(a, b); // Fails
deepEqual() && deepStrictEqual()
These functions do a deep comparison of objects to make sure they have the same keys and values. Only use these functions with POJOs, this will not work with MongoDB ObjectIds.
const assert = require('assert');
const obj = { a: 1, b: 2, c: 3};
const pojo = { a: '1', b: '2', c: '3'};
const entry = { a: 1, b: 2, c: 3 };
assert.deepEqual(obj, pojo); // passes
assert.deepStrictEqual(obj, entry); // passes
assert.deepStrictEqual(obj, pojo); // fails
throws()
Use this function when you want to assert that the function you are testing should throw an error with a specific message
.
The first parameter is a function and the second parameter is a regular expression that you want the error message to match.
const assert = require('assert');
function run() {
assert.throws(() => { test(); }, /TypeError: Wrong Value/);
}
function test() {
throw new TypeError('Wrong Value');
}
run();
rejects()
This functions similarly to throws()
, but is used with promises.
Use this with async functions.
const assert = require('assert');
async function run() {
await assert.rejects(async () => { await test(); }, /TypeError: Wrong Value/);
}
async function test() {
throw new TypeError('Wrong Value')
}
run();