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 プラグインの構築方法とテスト方法についてのアイデアを与えてくれた chai-fuzzy モジュールに感謝します。