在deepEqual
问题描述:
,当我与摩卡运行测试我有这样的代码在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: ...]
?
答
在我看来,这是您的测试套件向您显示对象是Date
类的实例的方式。如果仅仅是2017-03-08T21:58:45.767Z
,您将无法获得此信息,并且在更复杂的情况下可能更难调试。
在第一行,
AssertionError: { date: '' } deepEqual { date: 2017-03-08T21:58:45.767Z }
它显示toISOString()
表示,但是这可能会产生误导,因为date
值不该字符串。该值是一个Date
对象,因此在差异中可以清楚表明。
值表示的分隔符有什么问题?没有标准化的序列化格式 – Bergi
@Bergi分隔符的问题是:我有一个函数返回一个日期,我试着测试函数的输出,我可以用sinon http://sinonjs.org /releases/v1.17.7/fake-timers/,当我尝试测试预期日期字符串与断言中生成的日期不同时。 – JuanPablo