2017-03-08 33 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對象,因此在差異中可以清楚表明。

相關問題