NodeJS Assert Module provides a way of testing the expression of a particular condition, if it is true then nothing happens, and the rest of the program is executed without breaking the flow, but if it is false then the asserted error is thrown in the shell and terminate the rest of the code.
We can use NodeJS Assertion to write test cases. The Assert Module provides various methods used to perform assertions.
NodeJS Assert Module
Node.js Assert Module is a built-in Node.js module, so it is not required to install it, we just have to import it using the below syntax.
Syntax:
const assert = require('assert');
Methods within the NodeJS Assert Module
1. assert()
This method takes an expression and a message as parameters, if the expression value is true then nothing happens, if it is false then the assertion fails and an error throws containing the message in the terminal.
Syntax:
assert(expression, message)
- expression: Specifies the conditions
- message: Specifies the error message
Example:
const assert = require('assert');
assert(2 == 4, "2 is not equal to 4"); // 2 == 4 is false, so this will throw an error
Output:
2. deepEqual()
This method takes two objects as an argument to check whether both object and their child objects are equal using the == operator, if it is not equal then it returns false and the assertion fails. This method takes a message as an optional argument which is thrown if the assertion fails.
Syntax:
assert.deepEqual(obj, obj, message)
- obj: Specifies the object for the comparison
- message: Specifies the error message
Example:
const assert = require('assert');
const hello = { text: { value: "Hello" } }
const world = { text: { value: "World!" } }
assert.deepEqual(hello, world, "Hello is not equal to World!"); // "Hello" == "World!" is false, so this will throw an error
Output:
3. notDeepEqual()
This method takes two objects as an argument to check whether both object and their child objects are not equal using the != operator, if it is equal then it returns false and the assertion fails. This method takes a message as an optional argument which is thrown if the assertion fails.
Syntax:
assert.notDeepEqual(obj, obj, message)
- obj: Specifies the object for the comparison
- message: Specifies the error message
Example:
const assert = require('assert');
const num1 = { number: { value: 1 } }
const num2 = { number: { value: "1" } }
assert.notDeepEqual(num1, num2, "Values are equal!"); // This will fail because the values are equal
Output:
4. deepStrictEqual
This method is similar to the deepEqual() method, but instead of using the == operator, this method uses the === operator.
Syntax:
assert.deepStrictEqual(obj, obj, message)
- obj: Specifies the object for the comparison
- message: Specifies the error message
Example:
const assert = require('assert');
const num1 = { number: { value: "1" } }
const num2 = { number: { value: 1 } }
assert.deepStrictEqual(num1, num2, "Value are not strictly equal!"); // "1" === 1 is false, so this will throw an error
Output:
5. notDeepStrictEqual
This method is similar to the notDeepEqual() method, but instead of using the != operator, this method uses the !== operator.
Syntax:
assert.notDeepStrictEqual(obj, obj, message)
- obj: Specifies the object for the comparison
- message: Specifies the error message
Example:
const assert = require('assert');
const num1 = { number: { value: 1 } }
const num2 = { number: { value: 1 } }
assert.notDeepStrictEqual(num1, num2, "Values are strictly equal!"); // This will fail because the values are strictly equal
Output:
6. equal()
This method takes two values as an argument to check whether both values are equal or not using the == operator, if it is equal then it returns true, if not then returns false. This method takes a message as an optional argument which throws if the assertion fails.
Syntax:
assert.equal(value, value, message)
- value: Specifies the value for the comparison
- message: Specifies the error message
Example:
const assert = require('assert');
assert.equal(1, 2, "Values are not equal!"); // 1 == 2 is false, so it will throw an error
Output:
7. notEqual()
This method is the opposite of the method equal(), which uses the != operator to perform the assertion, which fails when both values are equal.
Syntax:
assert.notEqual(value, value, message)
- value: Specifies the value for the comparison
- message: Specifies the error message
Example:
const assert = require('assert');
assert.notEqual(1, 1, "Values are equal!"); // 1 != 1 is false, so it will throw an error
Output:
8. strictEqual()
This method is similar to the equal() method, but it uses the === operator to perform assertion whereas the equal() method uses the == operator.
Syntax:
assert.strictEqual(value, value, message)
- value: Specifies the value for the comparison
- message: Specifies the error message
Example:
const assert = require('assert');
assert.strictEqual(1, "1", "Values are not strictly equal!"); // 1 === "1" => false
Output:
9. notStrictEqual()
This method is the opposite of the method strictEqual(), it uses the !== operator to perform the assertion, which fails when both values are strictly equal.
Syntax:
assert.notStrictEqual(value, value, message)
- value: Specifies the value for the comparison
- message: Specifies the error message
Example:
const assert = require('assert');
assert.notStrictEqual(1, "1", "Values are strictly equal!"); // 1 != "1" => true
assert.notStrictEqual(1, 1, "Values are strictly equal!"); // 1 != 1 => false
Output:
10. ok()
This method is completely identical to the assert() method.
Syntax:
assert.ok(expression, message)
- expression: Specifies the conditions
- message: Specifies the error message
Example:
const assert = require('assert');
assert.ok(1 == 1, "1 is not equal to 1"); // 1 == 1 => true
assert.ok(1 == 2, "1 is not equal to 2"); // 1 == 2 => false
Output:
Summary
Node.js Assert Module is a built-in module, used to perform various types of assertion. There are various methods with slightly different functionalities, it is important to understand the difference between them, to write proper tests in Node.js. However, the Assert Module is not recommended to use for testing, but still, it can be used in unit testing when it is required to test a small expression for some conditions. We hope this tutorial helped you to understand the Node.js Assertion.
Reference
https://nodejs.org/api/assert.html