Mocha で JavaScript のテストを書くと失敗した時、オブジェクトの差分が表示されることがあります。あれを表示する方法を調べてみました。
インストール
$ npm install -g mocha
結論
結論から書くと throw
された例外オブジェクトに actual
と expected
というプロパティがあると差分が表示されるみたいです。
// test/a.js
const assert = require('assert');
const x = { a: 1, b: 2, c: 3 };
const y = { b: 2, c: 4, d: 5 };
it('a', () => {
const e = Error();
e.actual = x;
e.expected = y;
throw e;
});
これを実行すると差分が表示されてテストに失敗します。
$ mocha
1) a
0 passing (13ms)
1 failing
1) a:
+ expected - actual
{
- "a": 1
"b": 2
- "c": 3
+ "c": 4
+ "d": 5
}
rror
at Error (native)
at Context.<anonymous> (test/a.js:7:15)
余分なプロパティや足りないプロパティがわかりやすく表示されました。
テストが失敗した時のメッセージを見やすくするために power-assert
を使ったりもしますが、こういう方法も覚えておくとデバッグを楽にできるかもしれません。