1

我有这个代码

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: ...]

4

1 回答 1

2

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

在第一行,

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

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

于 2017-03-08T22:20:44.090 回答