Странная новая дата в 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: ...]
?
1 ответ
Решение
Мне кажется, что именно так ваш набор тестов показывает вам, что объект является экземпляром Date
учебный класс. Вы бы не получили эту информацию, если бы она была просто 2017-03-08T21:58:45.767Z
и, возможно, будет сложнее отлаживать в более сложном сценарии.
В первой строке
AssertionError: { date: '' } deepEqual { date: 2017-03-08T21:58:45.767Z }
Это показывает toISOString()
представление, но это может вводить в заблуждение, потому что значение date
это не та строка. Значение является Date
объект, так что в diff это ясно дает понять.