deepEqual 中奇怪的新日期

strange new Date in deepEqual

我有这个代码

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: ...]之间?

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

第一行,

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

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