2017-03-08 7 views
1

ich diesen Code habeseltsames neues Datum in deepEqual

var assert = require('assert'); 

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

wenn ich den Test mit Mokka laufen bekomme ich diesen

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) 

Warum das Datum in der deepEqual erzeugt hat dieses Format [Date: 2017-03-08T21:58:45.767Z] und das nicht Format 2017-03-08T21:58:45.767Z?

Warum ist das generierte Datum zwischen den Klammern [Date: ...]?

+0

Was stimmt nicht mit Trennzeichen um eine Wertdarstellung? Es gibt kein standardisiertes Serialisierungsformat – Bergi

+0

@Bergi das Problem mit dem Begrenzer ist: Ich habe eine Funktion, die ein Datum zurückgeben, und ich versuche, die Ausgabe der Funktion zu testen, kann ich die Uhr mit Sinon http://sinonjs.org vortäuschen /releases/v1.17.7/fake-timers/, und wenn ich versuche, eine erwartete Datumszeichenkette zu testen, unterscheidet sie sich von dem Datum, das in der Bestätigung erzeugt wird. – JuanPablo

Antwort

2

Es scheint mir, dass Ihre Testreihe Ihnen zeigt, dass das Objekt eine Instanz der Klasse Date ist. Sie würden diese Information nicht bekommen, wenn es einfach 2017-03-08T21:58:45.767Z wäre, und wäre möglicherweise schwieriger in einem komplexeren Szenario zu debuggen.

In der ersten Zeile,

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

Es zeigt die toISOString() Darstellung, aber das, weil der Wert von datenicht dass String ist irreführend sein könnte. Der Wert ist ein Date Objekt, also im diff macht das klar.

Verwandte Themen