在deepEqual中奇怪的新日期

时间:2017-03-08 22:04:06

标签: node.js assert deepequals

我有这段代码

var assert = require('assert');

describe('date', function() {
  it('deep equal', function() {
    assert.deepEqual({date: ''}, {date:new Date()});
  });
});

当我用mocha运行测试时,我得到了这个

  AssertionError: { date: '' } deepEqual { date: 2017-03-08T21:58:45.767Z }
  + expected - actual

   {
  -  "date": ""
  +  "date": [Date: 2017-03-08T21:58:45.767Z]
   }

  at Context.<anonymous> (test/test_date.js:5:12)

为什么在deepEqual中生成的日期具有此格式[Date: 2017-03-08T21:58:45.767Z]而不是此格式2017-03-08T21:58:45.767Z

为什么生成的日期位于方括号[Date: ...]

之间

1 个答案:

答案 0 :(得分:2)

在我看来,这是您的测试套件向您展示该对象是Date类的实例的方式。如果它只是2017-03-08T21:58:45.767Z,您将无法获得此信息,并且在更复杂的情况下可能更难调试。

在第一行,

  AssertionError: { date: '' } deepEqual { date: 2017-03-08T21:58:45.767Z }

它显示了toISOString()表示,但这可能会产生误导,因为date的值该字符串。该值是Date对象,因此在差异中它清楚地表明了这一点。