2017-03-08 40 views
1

,当我与摩卡运行测试我有这样的代码在deepEqual

var assert = require('assert'); 

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

陌生的日期我得到这个

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

+0

值表示的分隔符有什么问题?没有标准化的序列化格式 – Bergi

+0

@Bergi分隔符的问题是:我有一个函数返回一个日期,我试着测试函数的输出,我可以用sinon http://sinonjs.org /releases/v1.17.7/fake-timers/,当我尝试测试预期日期字符串与断言中生成的日期不同时。 – JuanPablo

回答

2

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

在第一行,

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

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

相关问题