Node.js unit-testing module has basic assertion assert.fail:
assert.fail(actual, expected, message, operator)
What does operator
mean? I'm really new to unit-testing...
The assert() method tests if a given expression is true or not. If the expression evaluates to 0, or false, an assertion failure is being caused, and the program is terminated. The assert() method is an alias of the assert.
The assert. deepEqual() method tests if two objects, and their child objects, are equal, using the == operator. If the two objects are not equal, an assertion failure is being caused, and the program is terminated.
In test codes, assert module's assert. equal are heavily used. It is legacy API and deprecated since Node. js v9.
What the documentation says: The value of operator
is being used to separate the values of actual
and expected
when providing an error message. This is described in Node.js' documentation for the assert module.
But, if you try this in the interactive shell you see that the parameter seems to be ignored:
> assert.fail(23, 42, 'Malfunction in test.', '###')
AssertionError: Malfunction in test.
at repl:1:9
at REPLServer.self.eval (repl.js:111:21)
at Interface.<anonymous> (repl.js:250:12)
at Interface.EventEmitter.emit (events.js:88:17)
at Interface._onLine (readline.js:199:10)
at Interface._line (readline.js:517:8)
at Interface._ttyWrite (readline.js:735:14)
at ReadStream.onkeypress (readline.js:98:10)
at ReadStream.EventEmitter.emit (events.js:115:20)
at emitKey (readline.js:1057:12)
It all makes sense when you take a look at the implementation of the assert module, lines 101-109:
function fail(actual, expected, message, operator, stackStartFunction) {
throw new assert.AssertionError({
message: message,
actual: actual,
expected: expected,
operator: operator,
stackStartFunction: stackStartFunction
});
}
So, a better description might be that it is not used automatically in the message, but it can be used if you catch the exception and create an appropriate message yourself. In consequence, this parameter may be useful if you are going to create your own testing framework.
You can force Node.js to use that parameter if you omit the message
parameter, e.g. by passing undefined
explicitly:
> assert.fail(23, 42, undefined, '###')
AssertionError: 23 ### 42
[...]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With