nodeunit icon indicating copy to clipboard operation
nodeunit copied to clipboard

assert.{equal,strictEqual} do not print compared objects when comparing falsy values and message has been set

Open fsateler opened this issue 13 years ago • 1 comments

This is the test module:

module.exports = {
    'Falsy tests with messages': function(test) {
        test.equal(1, undefined, "A message");
        test.equal(1, null, "A message");
        test.equal(1, false, "A message");
        test.equal(1, 0, "A message");
        test.equal(1, '', "A message");
        test.done();
    },
    'Falsy tests without messages': function(test) {
        test.equal(1, undefined);
        test.equal(1, null);
        test.equal(1, false);
        test.equal(1, 0);
        test.equal(1, '');
        test.done();
    }
};

And the output:

% nodeunit test.js |grep 'AssertionError\|Falsy'
✖ Falsy tests with messages
AssertionError: A message
AssertionError: A message
AssertionError: A message
AssertionError: A message
AssertionError: A message
✖ Falsy tests without messages
AssertionError:  == 1
AssertionError: null == 1
AssertionError: false == 1
AssertionError: 0 == 1
AssertionError: "" == 1

The problem is in utils.betterErrors, line 186. I think equal, strictEqual and friends should set a property indicating that they have indeed been passed expected and actual values instead of trying to guess.

BTW, undefined should probably print "undefined" or something like that. And it also is strange that, compared to equal, the expected and actual values order is reversed.

fsateler avatar Apr 11 '12 14:04 fsateler

This issue is a bit of a killer, would love to see a fix for this.

sbrandwoo avatar Sep 27 '12 22:09 sbrandwoo