chai-datetime

Chai 的匹配器,用于帮助对 JavaScript Date 对象进行常见的日期比较断言。

npm version Build Status

为什么?

在 JavaScript 中比较日期对象不是基于值的,这需要您调用 getTime() 来确保值匹配。这些匹配器消除了这样做的必要性。此外,当使用标准的 Chai 等于匹配器比较 getTime() 值时,您不会得到非常可读的输出,因为您正在比较纪元秒。

更好的错误消息

使用 getTime() 比较日期值以获得相等性会产生不可读的错误消息

AssertionError: expected 1369944360000 to equal 1369944300000

使用 chai-datetime 来获得更易读的错误消息

AssertionError: expected Thu May 30 2013 16:06:00.000 (-04:00) to equal Thu May 30 2013 16:05:00.000 (-04:00)

用法

浏览器

<script src="chai.js"></script>
<script src="chai-datetime.js"></script>

服务器

var chai = require('chai');
chai.use(require('chai-datetime'));

断言

有一组断言在时间和日期上起作用。任何在名称中指定日期的断言只比较 Date 对象的日期部分。

  • equalTime
  • closeToTime(以秒为单位的可配置增量)
  • beforeTime
  • beforeOrEqualTime
  • afterTime
  • afterOrEqualTime
  • withinTime
  • equalDate
  • beforeDate
  • beforeOrEqualDate
  • afterDate
  • afterOrEqualDate
  • withinDate

所有断言都针对 BDD 和 TDD 语法定义。

var d1 = new Date(2013, 4, 30, 16, 5),
    d2 = new Date(2013, 4, 30, 17);

d1.should.equalDate(d2)
expect(d1).to.equalDate(d2)
assert.equalDate(d1, d2)

感谢

感谢 @mitchlloyd 与我一起进行配对,帮助我入门。感谢 @rockwood 忍受我不断的嘲讽。

感谢 chai-fuzzy 模块,它给了我关于如何构建和测试 Chai 插件的思路。