chai-datetime

為 chai 提供匹配器,以協助針對 JavaScript Date 物件進行常見的日期比較斷言。

npm version Build Status

為什麼?

在 JavaScript 中比較日期物件不是基於值,這需要您呼叫 getTime() 以確保值匹配。這些匹配器消除了這樣做的需要。此外,當使用標準 chai 相等匹配器比較 getTime() 值時,您不會得到非常易讀的輸出,因為您比較的是 epoch 秒。

更好的錯誤訊息

使用 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 外掛的想法。