Reputation: 7677
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...
Upvotes: 8
Views: 4514
Reputation: 150614
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
[...]
Upvotes: 9